// Ensures that all `fn` forms can have all the function qualifiers syntactically.

//@ check-pass
//@ edition:2018

fn main() {}

#[cfg(FALSE)]
fn syntax() {
    async fn f();
    unsafe fn f();
    const fn f();
    extern "C" fn f();
    const async unsafe extern "C" fn f();

    trait X {
        async fn f();
        unsafe fn f();
        const fn f();
        extern "C" fn f();
        const async unsafe extern "C" fn f();
    }

    impl X for Y {
        async fn f();
        unsafe fn f();
        const fn f();
        extern "C" fn f();
        const async unsafe extern "C" fn f();
    }

    impl Y {
        async fn f();
        unsafe fn f();
        const fn f();
        extern "C" fn f();
        const async unsafe extern "C" fn f();
    }

    extern "C" {
        fn f();
        fn f();
        fn f();
        fn f();
        fn f();
    }
}
