2023-10-19 16:46:28 -05:00
|
|
|
// Test that closures and coroutines are "must use" types.
|
2020-07-27 19:00:00 -05:00
|
|
|
//@ edition:2018
|
|
|
|
|
|
|
|
#![feature(async_closure)]
|
2024-04-11 08:15:34 -05:00
|
|
|
#![feature(coroutines, stmt_expr_attributes)]
|
2020-07-27 19:00:00 -05:00
|
|
|
#![deny(unused_must_use)]
|
|
|
|
|
|
|
|
fn unused() {
|
|
|
|
|| { //~ ERROR unused closure that must be used
|
|
|
|
println!("Hello!");
|
|
|
|
};
|
|
|
|
|
2020-09-02 02:40:56 -05:00
|
|
|
async {}; //~ ERROR unused implementer of `Future` that must be used
|
2020-07-27 19:00:00 -05:00
|
|
|
|| 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 _ = || {};
|
2024-04-11 08:15:34 -05:00
|
|
|
let _ = #[coroutine] || yield 42;
|
2020-07-27 19:00:00 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
unused();
|
|
|
|
ignored();
|
|
|
|
}
|