// 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 {
        y @ Some(x) => {}
        //~^ 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 {
        e @ 1..=5 => {}
        //~^ 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
        _ => {}
    }
}
