| //@ run-rustfix |
| #![deny(unsafe_attr_outside_unsafe)] |
| |
| macro_rules! tt { |
| ($e:tt) => { |
| #$e |
| extern "C" fn foo() {} |
| } |
| } |
| |
| macro_rules! ident { |
| ($e:ident) => { |
| #[unsafe($e)] |
| //~^ ERROR: unsafe attribute used without unsafe |
| //~| WARN this is accepted in the current edition |
| extern "C" 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 "C" fn bars() {} |
| } |
| } |
| |
| macro_rules! meta { |
| ($m:meta) => { |
| #[$m] |
| extern "C" fn baz() {} |
| } |
| } |
| |
| macro_rules! meta2 { |
| ($m:meta) => { |
| #[$m] |
| extern "C" 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() {} |