// Test that closures and coroutines are "must use" types.
//@ edition:2018

#![feature(async_closure)]
#![feature(coroutines, stmt_expr_attributes)]
#![deny(unused_must_use)]

fn unused() {
    || { //~ ERROR unused closure that must be used
        println!("Hello!");
    };

    async {};    //~ ERROR unused implementer of `Future` that must be used
    || async {}; //~ ERROR unused closure that must be used
    async || {}; //~ ERROR unused closure that must be used


    [Box::new([|| {}; 10]); 1]; //~ ERROR unused array of boxed arrays of closures that must be used

    vec![|| "a"].pop().unwrap(); //~ ERROR unused closure that must be used

    let b = false;
        || true; //~ ERROR unused closure that must be used
    println!("{}", b);
}

fn ignored() {
    let _ = || {};
    let _ = #[coroutine] || yield 42;
}

fn main() {
    unused();
    ignored();
}
