61 lines
1.3 KiB
Rust
61 lines
1.3 KiB
Rust
//@ run-rustfix
|
|
#![deny(unsafe_attr_outside_unsafe)]
|
|
|
|
macro_rules! tt {
|
|
($e:tt) => {
|
|
#$e
|
|
extern fn foo() {}
|
|
}
|
|
}
|
|
|
|
macro_rules! ident {
|
|
($e:ident) => {
|
|
#[$e]
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
extern fn bar() {}
|
|
}
|
|
}
|
|
|
|
macro_rules! ident2 {
|
|
($e:ident, $l:literal) => {
|
|
#[$e = $l]
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
extern fn bars() {}
|
|
}
|
|
}
|
|
|
|
macro_rules! meta {
|
|
($m:meta) => {
|
|
#[$m]
|
|
extern fn baz() {}
|
|
}
|
|
}
|
|
|
|
macro_rules! meta2 {
|
|
($m:meta) => {
|
|
#[$m]
|
|
extern fn baw() {}
|
|
}
|
|
}
|
|
|
|
tt!([no_mangle]);
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
ident!(no_mangle);
|
|
meta!(no_mangle);
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
meta2!(export_name = "baw");
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
ident2!(export_name, "bars");
|
|
|
|
#[no_mangle]
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
extern "C" fn one() {}
|
|
|
|
fn main() {}
|