1 // run-pass 2 // ignore-wasm32 3 4 #![feature(decl_macro)] 5 6 macro_rules! returns_isize( 7 ($ident:ident) => ( 8 fn $ident() -> isize; 9 ) 10 ); 11 12 macro takes_u32_returns_u32($ident:ident) { 13 fn $ident(arg: u32) -> u32; 14 } 15 16 macro_rules! emits_nothing( 17 () => () 18 ); 19 20 macro_rules! emits_multiple( 21 () => { 22 fn f1() -> u32; 23 fn f2() -> u32; 24 } 25 ); 26 27 mod defs { 28 #[no_mangle] f1() -> u3229 extern "C" fn f1() -> u32 { 30 1 31 } 32 #[no_mangle] f2() -> u3233 extern "C" fn f2() -> u32 { 34 2 35 } 36 } 37 main()38fn main() { 39 assert_eq!(unsafe { rust_get_test_int() }, 1); 40 assert_eq!(unsafe { rust_dbg_extern_identity_u32(0xDEADBEEF) }, 0xDEADBEEFu32); 41 assert_eq!(unsafe { f1() }, 1); 42 assert_eq!(unsafe { f2() }, 2); 43 } 44 45 #[link(name = "rust_test_helpers", kind = "static")] 46 extern "C" { 47 returns_isize!(rust_get_test_int); 48 takes_u32_returns_u32!(rust_dbg_extern_identity_u32); 49 emits_nothing!(); 50 emits_multiple!(); 51 } 52