// This tests the parser recovery in `recover_intersection_pat`
// and serves as a regression test for the diagnostics issue #65400.
//
// The general idea is that for `$pat_lhs @ $pat_rhs` where
// `$pat_lhs` is not generated by `ref? mut? $ident` we want
// to suggest either switching the order or note that intersection
// patterns are not allowed.

//@ run-rustfix

#![allow(unused_variables)]

fn main() {
    let s: Option<u8> = None;

    match s {
        Some(x) @ y => {}
        //~^ ERROR pattern on wrong side of `@`
        //~| NOTE pattern on the left, should be on the right
        //~| NOTE binding on the right, should be on the left
        //~| HELP switch the order
        //~| SUGGESTION y @ Some(x)
        _ => {}
    }

    match 2 {
        1 ..= 5 @ e => {}
        //~^ ERROR pattern on wrong side of `@`
        //~| NOTE pattern on the left, should be on the right
        //~| NOTE binding on the right, should be on the left
        //~| HELP switch the order
        //~| SUGGESTION e @ 1..=5
        _ => {}
    }
}
