#![deny(warnings)] // Ensure that unknown lints inside cfg-attr's are linted for #![cfg_attr(all(), allow(nonex_lint_top_level))] //~^ ERROR unknown lint #![cfg_attr(all(), allow(bare_trait_object))] //~^ ERROR has been renamed #[cfg_attr(all(), allow(nonex_lint_mod))] //~^ ERROR unknown lint mod baz { #![cfg_attr(all(), allow(nonex_lint_mod_inner))] //~^ ERROR unknown lint } #[cfg_attr(all(), allow(nonex_lint_fn))] //~^ ERROR unknown lint pub fn main() {} macro_rules! bar { ($($t:tt)*) => { $($t)* }; } bar!( #[cfg_attr(all(), allow(nonex_lint_in_macro))] //~^ ERROR unknown lint pub fn _bar() {} ); // No warning for non-applying cfg #[cfg_attr(any(), allow(nonex_lint_fn))] pub fn _foo() {} // Allowing unknown lints works if inside cfg_attr #[cfg_attr(all(), allow(unknown_lints))] mod bar_allowed { #[allow(nonex_lint_fn)] fn _foo() {} } // ... but not if the cfg_attr doesn't evaluate #[cfg_attr(any(), allow(unknown_lints))] mod bar_not_allowed { #[allow(nonex_lint_fn)] //~^ ERROR unknown lint fn _foo() {} }