//@ edition:2018 async fn foo () { } fn bar() -> impl std::future::Future { async {} } fn boo() {} async fn baz() -> std::io::Result<()> { foo().await; boo().await; //~ ERROR `()` is not a future bar().await; std::io::Result::Ok(()) } macro_rules! e { () => { () }; } macro_rules! f { ($expr:expr) => { $expr.await //~^ ERROR `()` is not a future }; } async fn with_macros() { e!().await; //~^ ERROR `()` is not a future f!(()); } // Regression test for issue #117014. async fn desugaring_span_ctxt() { for x in [] {}.await //~ ERROR `()` is not a future } fn main() {}