#![feature(try_trait)]
// edition:2018
fn main() {}

fn a_function() -> u32 {
    let x: Option<u32> = None;
    x?; //~ ERROR the `?` operator
    22
}

fn a_closure() -> u32 {
    let a_closure = || {
        let x: Option<u32> = None;
        x?; //~ ERROR the `?` operator
        22
    };
    a_closure()
}

fn a_method() -> u32 {
    struct S;

    impl S {
        fn a_method() {
            let x: Option<u32> = None;
            x?; //~ ERROR the `?` operator
        }
    }

    S::a_method();
    22
}

fn a_trait_method() -> u32 {
    struct S;
    trait T {
        fn a_trait_method() {
            let x: Option<u32> = None;
            x?; //~ ERROR the `?` operator
        }
    }

    impl T for S { }

    S::a_trait_method();
    22
}
