// 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.

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

    match s {
        Some(x) @ Some(y) => {}
        //~^ ERROR left-hand side of `@` must be a binding
        //~| NOTE interpreted as a pattern, not a binding
        //~| NOTE also a pattern
        //~| NOTE bindings are `x`, `mut x`, `ref x`, and `ref mut x`
        _ => {}
    }
}
