//! Regression test for <https://github.com/rust-lang/rust/issues/51102>.
//! Test matching non-existing fields via struct pattern syntax in closures doesn't ICE.

enum SimpleEnum {
    NoState,
}

struct SimpleStruct {
    no_state_here: u64,
}

fn main() {
    let _ = |simple| {
        match simple {
            SimpleStruct {
                state: 0,
                //~^ ERROR struct `SimpleStruct` does not have a field named `state` [E0026]
                ..
            } => (),
        }
    };

    let _ = |simple| {
        match simple {
            SimpleStruct {
                no_state_here: 0,
                no_state_here: 1
                //~^ ERROR field `no_state_here` bound multiple times in the pattern [E0025]
            } => (),
        }
    };

    let _ = |simple| {
        match simple {
            SimpleEnum::NoState {
                state: 0
                //~^ ERROR variant `SimpleEnum::NoState` does not have a field named `state` [E0026]
            } => (),
        }
    };
}
