// Tests for repeating attribute warnings. //@ aux-build:lint_unused_extern_crate.rs //@ compile-flags:--test // Not tested due to extra requirements: // - panic_handler: needs extra setup // - target_feature: platform-specific // - link_section: platform-specific // - proc_macro, proc_macro_derive, proc_macro_attribute: needs to be a // proc-macro, and have special handling for mixing. // - unstable attributes (not going to bother) // - no_main: extra setup #![deny(unused_attributes)] #![crate_name = "unused_attr_duplicate"] #![crate_name = "unused_attr_duplicate2"] //~ ERROR unused attribute //~^ WARN this was previously accepted #![recursion_limit = "128"] #![recursion_limit = "256"] //~ ERROR unused attribute //~^ WARN this was previously accepted #![type_length_limit = "1048576"] #![type_length_limit = "1"] //~ ERROR unused attribute //~^ WARN this was previously accepted #![no_std] #![no_std] //~ ERROR unused attribute #![no_implicit_prelude] #![no_implicit_prelude] //~ ERROR unused attribute #![windows_subsystem = "console"] #![windows_subsystem = "windows"] //~ ERROR unused attribute //~^ WARN this was previously accepted #![no_builtins] #![no_builtins] //~ ERROR unused attribute #[no_link] #[no_link] //~ ERROR unused attribute extern crate lint_unused_extern_crate; #[macro_use] #[macro_use] //~ ERROR unused attribute pub mod m { #[macro_export] #[macro_export] //~ ERROR unused attribute macro_rules! foo { () => {}; } } #[path = "auxiliary/lint_unused_extern_crate.rs"] #[path = "bar.rs"] //~ ERROR unused attribute //~^ WARN this was previously accepted pub mod from_path; #[test] #[ignore] #[ignore = "some text"] //~ ERROR unused attribute #[should_panic] #[should_panic(expected = "values don't match")] //~ ERROR unused attribute //~^ WARN this was previously accepted fn t1() {} #[must_use] #[must_use = "some message"] //~ ERROR unused attribute //~^ WARN this was previously accepted // No warnings for #[repr], would require more logic. #[repr(C)] #[repr(C)] #[non_exhaustive] #[non_exhaustive] //~ ERROR unused attribute pub struct X; #[automatically_derived] #[automatically_derived] //~ ERROR unused attribute impl X {} #[inline(always)] #[inline(never)] //~ ERROR unused attribute //~^ WARN this was previously accepted #[cold] #[cold] //~ ERROR unused attribute #[track_caller] #[track_caller] //~ ERROR unused attribute pub fn xyz() {} // No warnings for #[link], would require more logic. #[link(name = "rust_test_helpers", kind = "static")] #[link(name = "rust_test_helpers", kind = "static")] extern "C" { #[link_name = "this_does_not_exist"] //~ ERROR unused attribute //~^ WARN this was previously accepted #[link_name = "rust_dbg_extern_identity_u32"] pub fn name_in_rust(v: u32) -> u32; } #[export_name = "exported_symbol_name"] //~ ERROR unused attribute //~^ WARN this was previously accepted #[export_name = "exported_symbol_name2"] pub fn export_test() {} #[no_mangle] #[no_mangle] //~ ERROR unused attribute pub fn no_mangle_test() {} #[used] #[used] //~ ERROR unused attribute static FOO: u32 = 0; fn main() {}