#![allow(dead_code, unused_variables, unused_macro_rules, bad_style)] #![deny(keyword_idents)] //@ edition:2015 //@ run-rustfix fn r#async() {} //~ ERROR async //~^ WARN this is accepted in the current edition macro_rules! foo { ($foo:ident) => {}; ($r#async:expr, r#async) => {}; //~^ ERROR async //~| ERROR async //~| WARN this is accepted in the current edition //~| WARN this is accepted in the current edition } foo!(r#async); //~^ ERROR async //~| WARN this is accepted in the current edition mod dont_lint_raw { fn r#async() {} } mod async_trait { trait r#async {} //~^ ERROR async //~| WARN this is accepted in the current edition struct MyStruct; impl r#async for MyStruct {} //~^ ERROR async //~| WARN this is accepted in the current edition } mod async_static { static r#async: u32 = 0; //~^ ERROR async //~| WARN this is accepted in the current edition } mod async_const { const r#async: u32 = 0; //~^ ERROR async //~| WARN this is accepted in the current edition } struct Foo; impl Foo { fn r#async() {} } //~^ ERROR async //~| WARN this is accepted in the current edition fn main() { struct r#async {} //~^ ERROR async //~| WARN this is accepted in the current edition let r#async: r#async = r#async {}; //~^ ERROR async //~| WARN this is accepted in the current edition //~| ERROR async //~| WARN this is accepted in the current edition //~| ERROR async //~| WARN this is accepted in the current edition } #[macro_export] macro_rules! produces_async { () => (pub fn r#async() {}) //~^ ERROR async //~| WARN this is accepted in the current edition } #[macro_export] macro_rules! consumes_async { (r#async) => (1) //~^ ERROR async //~| WARN this is accepted in the current edition }