//@ run-pass
// adapted from tests/ui/binding/if-let.rs

#![allow(dead_code)]

fn none() -> bool {
    let None = Some("test") else {
        return true;
    };
    false
}

fn ok() -> bool {
    let Ok(()) = Err::<(),&'static str>("test") else {
        return true;
    };
    false
}

pub fn main() {
    let x = Some(3);
    let Some(y) = x else {
        panic!("let-else panicked");
    };
    assert_eq!(y, 3);
    let Some(_) = x else {
        panic!("bad match");
    };
    assert!(none());
    assert!(ok());

    assert!((|| {
        let 1 = 2 else {
            return true;
        };
        false
    })());

    enum Foo {
        One,
        Two(usize),
        Three(String, isize),
    }

    let foo = Foo::Three("three".to_string(), 42);
    let one = || {
        let Foo::One = foo else {
            return true;
        };
        false
    };
    assert!(one());
    let two = || {
        let Foo::Two(_x) = foo else {
            return true;
        };
        false
    };
    assert!(two());
    let three = || {
        let Foo::Three(s, _x) = foo else {
            return false;
        };
        s == "three"
    };
    assert!(three());

    let a@Foo::Two(_) = Foo::Two(42_usize) else {
        panic!("bad match")
    };
    let Foo::Two(b) = a else {
        panic!("panic in nested `if let`");
    };
    assert_eq!(b, 42_usize);
}
