#![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) => {};
    ($async:expr, r#async) => {};
    //~^ ERROR async
    //~| 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
}
