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) => {
|
|
#[unsafe($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) => {
|
|
#[unsafe($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!([unsafe(no_mangle)]);
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
ident!(no_mangle);
|
|
meta!(unsafe(no_mangle));
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
meta2!(unsafe(export_name = "baw"));
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
ident2!(export_name, "bars");
|
|
|
|
#[unsafe(no_mangle)]
|
|
//~^ ERROR: unsafe attribute used without unsafe
|
|
//~| WARN this is accepted in the current edition
|
|
extern "C" fn one() {}
|
|
|
|
fn main() {}
|