#![feature(coroutine_trait)] #![feature(coroutines, stmt_expr_attributes)] #![deny(unused_braces, unused_parens)] use std::ops::Coroutine; use std::pin::Pin; fn main() { let mut x = #[coroutine] |_| { while let Some(_) = (yield) {} while let Some(_) = {yield} {} // Only warn these cases while let Some(_) = ({yield}) {} //~ ERROR: unnecessary parentheses while let Some(_) = ((yield)) {} //~ ERROR: unnecessary parentheses {{yield}}; //~ ERROR: unnecessary braces {( yield )}; //~ ERROR: unnecessary parentheses while let Some(_) = {(yield)} {} //~ ERROR: unnecessary parentheses while let Some(_) = {{yield}} {} //~ ERROR: unnecessary braces // FIXME: It'd be great if we could also warn them. ((yield)); ({ yield }); }; let _ = Pin::new(&mut x).resume(Some(5)); }