| //@ check-pass |
| //@ compile-flags: --cfg something --check-cfg=cfg(nothing,something) |
| |
| #![deny(unused_mut)] |
| |
| extern "C" { |
| fn ffi( |
| #[allow(unused_mut)] a: i32, |
| #[cfg(something)] b: i32, |
| #[cfg_attr(something, cfg(nothing))] c: i32, |
| #[forbid(unused_mut)] d: i32, |
| #[deny(unused_mut)] #[warn(unused_mut)] ... |
| ); |
| } |
| |
| type FnType = fn( |
| #[allow(unused_mut)] a: i32, |
| #[cfg(something)] b: i32, |
| #[cfg_attr(something, cfg(nothing))] c: i32, |
| #[forbid(unused_mut)] d: i32, |
| #[deny(unused_mut)] #[warn(unused_mut)] e: i32 |
| ); |
| |
| pub fn foo( |
| #[allow(unused_mut)] a: i32, |
| #[cfg(something)] b: i32, |
| #[cfg_attr(something, cfg(nothing))] c: i32, |
| #[forbid(unused_mut)] d: i32, |
| #[deny(unused_mut)] #[warn(unused_mut)] _e: i32 |
| ) {} |
| |
| // self |
| |
| struct SelfStruct {} |
| impl SelfStruct { |
| fn foo( |
| #[allow(unused_mut)] self, |
| #[cfg(something)] a: i32, |
| #[cfg_attr(something, cfg(nothing))] |
| #[deny(unused_mut)] b: i32, |
| ) {} |
| } |
| |
| struct RefStruct {} |
| impl RefStruct { |
| fn foo( |
| #[allow(unused_mut)] &self, |
| #[cfg(something)] a: i32, |
| #[cfg_attr(something, cfg(nothing))] |
| #[deny(unused_mut)] b: i32, |
| ) {} |
| } |
| trait RefTrait { |
| fn foo( |
| #[forbid(unused_mut)] &self, |
| #[warn(unused_mut)] a: i32 |
| ) {} |
| } |
| impl RefTrait for RefStruct { |
| fn foo( |
| #[forbid(unused_mut)] &self, |
| #[warn(unused_mut)] a: i32 |
| ) {} |
| } |
| |
| // Box<Self> |
| |
| struct BoxSelfStruct {} |
| impl BoxSelfStruct { |
| fn foo( |
| #[allow(unused_mut)] self: Box<Self>, |
| #[cfg(something)] a: i32, |
| #[cfg_attr(something, cfg(nothing))] |
| #[deny(unused_mut)] b: i32, |
| ) {} |
| } |
| trait BoxSelfTrait { |
| fn foo( |
| #[forbid(unused_mut)] self: Box<Self>, |
| #[warn(unused_mut)] a: i32 |
| ) {} |
| } |
| impl BoxSelfTrait for BoxSelfStruct { |
| fn foo( |
| #[forbid(unused_mut)] self: Box<Self>, |
| #[warn(unused_mut)] a: i32 |
| ) {} |
| } |
| |
| fn main() { |
| let _: unsafe extern "C" fn(_, _, _, ...) = ffi; |
| let _: fn(_, _, _, _) = foo; |
| let _: FnType = |_, _, _, _| {}; |
| let c = | |
| #[allow(unused_mut)] a: u32, |
| #[cfg(something)] b: i32, |
| #[cfg_attr(something, cfg(nothing))] |
| #[deny(unused_mut)] c: i32, |
| | {}; |
| c(1, 2); |
| } |