#![allow(clashing_extern_declarations)]
//@ check-pass

// In this test we check that the parser accepts an ABI string when it
// comes from a macro `literal` or `expr` fragment as opposed to a hardcoded string.

fn main() {}

macro_rules! abi_from_lit_frag {
    ($abi:literal) => {
        extern $abi {
            fn _import();
        }

        extern $abi fn _export() {}

        type _PTR = extern $abi fn();
    }
}

macro_rules! abi_from_expr_frag {
    ($abi:expr) => {
        extern $abi {
            fn _import();
        }

        extern $abi fn _export() {}

        type _PTR = extern $abi fn();
    };
}

mod rust {
    abi_from_lit_frag!("Rust");
}

mod c {
    abi_from_lit_frag!("C");
}

mod rust_expr {
    abi_from_expr_frag!("Rust");
}

mod c_expr {
    abi_from_expr_frag!("C");
}
