// Test that we don't consider temporaries for statement expressions as live // across yields //@ check-pass //@ edition:2018 #![feature(coroutines, coroutine_trait, stmt_expr_attributes)] use std::ops::Coroutine; async fn drop_and_await() { async {}; async {}.await; } fn drop_and_yield() { let x = #[coroutine] || { String::new(); yield; }; Box::pin(x).as_mut().resume(()); let y = #[coroutine] static || { String::new(); yield; }; Box::pin(y).as_mut().resume(()); } fn main() { drop_and_await(); drop_and_yield(); }