106 lines
3.1 KiB
Rust
106 lines
3.1 KiB
Rust
|
// 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() {}
|