Auto merge of #88681 - ehuss:duplicate-attributes, r=petrochenkov
Check for duplicate attributes. This adds some checks for duplicate attributes. In many cases, the duplicates were being ignored without error or warning. This adds several kinds of checks (see `AttributeDuplicates` enum). The motivation here is to issue unused warnings with similar reasoning for any unused lint, and to error for cases where there are conflicts. This also adds a check for empty attribute lists in a few attributes where this causes the attribute to be ignored. Closes #55112.
This commit is contained in:
commit
f7c48297ce
15 changed files with 1053 additions and 303 deletions
14
src/test/ui/empty/empty-attributes.rs
Normal file
14
src/test/ui/empty/empty-attributes.rs
Normal file
|
|
@ -0,0 +1,14 @@
|
|||
#![deny(unused_attributes)]
|
||||
#![allow()] //~ ERROR unused attribute
|
||||
#![warn()] //~ ERROR unused attribute
|
||||
#![deny()] //~ ERROR unused attribute
|
||||
#![forbid()] //~ ERROR unused attribute
|
||||
#![feature()] //~ ERROR unused attribute
|
||||
|
||||
#[repr()] //~ ERROR unused attribute
|
||||
pub struct S;
|
||||
|
||||
#[target_feature()] //~ ERROR unused attribute
|
||||
pub unsafe fn foo() {}
|
||||
|
||||
fn main() {}
|
||||
63
src/test/ui/empty/empty-attributes.stderr
Normal file
63
src/test/ui/empty/empty-attributes.stderr
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
error: unused attribute
|
||||
--> $DIR/empty-attributes.rs:8:1
|
||||
|
|
||||
LL | #[repr()]
|
||||
| ^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/empty-attributes.rs:1:9
|
||||
|
|
||||
LL | #![deny(unused_attributes)]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
= note: attribute `repr` with an empty list has no effect
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/empty-attributes.rs:11:1
|
||||
|
|
||||
LL | #[target_feature()]
|
||||
| ^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
= note: attribute `target_feature` with an empty list has no effect
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/empty-attributes.rs:2:1
|
||||
|
|
||||
LL | #![allow()]
|
||||
| ^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
= note: attribute `allow` with an empty list has no effect
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/empty-attributes.rs:3:1
|
||||
|
|
||||
LL | #![warn()]
|
||||
| ^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
= note: attribute `warn` with an empty list has no effect
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/empty-attributes.rs:4:1
|
||||
|
|
||||
LL | #![deny()]
|
||||
| ^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
= note: attribute `deny` with an empty list has no effect
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/empty-attributes.rs:5:1
|
||||
|
|
||||
LL | #![forbid()]
|
||||
| ^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
= note: attribute `forbid` with an empty list has no effect
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/empty-attributes.rs:6:1
|
||||
|
|
||||
LL | #![feature()]
|
||||
| ^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
= note: attribute `feature` with an empty list has no effect
|
||||
|
||||
error: aborting due to 7 previous errors
|
||||
|
||||
|
|
@ -134,4 +134,27 @@ mod start {
|
|||
//~^ ERROR: `start` attribute can only be used on functions
|
||||
}
|
||||
|
||||
#[repr(C)]
|
||||
//~^ ERROR: attribute should be applied to a struct, enum, or union
|
||||
mod repr {
|
||||
//~^ NOTE not a struct, enum, or union
|
||||
mod inner { #![repr(C)] }
|
||||
//~^ ERROR: attribute should be applied to a struct, enum, or union
|
||||
//~| NOTE not a struct, enum, or union
|
||||
|
||||
#[repr(C)] fn f() { }
|
||||
//~^ ERROR: attribute should be applied to a struct, enum, or union
|
||||
//~| NOTE not a struct, enum, or union
|
||||
|
||||
struct S;
|
||||
|
||||
#[repr(C)] type T = S;
|
||||
//~^ ERROR: attribute should be applied to a struct, enum, or union
|
||||
//~| NOTE not a struct, enum, or union
|
||||
|
||||
#[repr(C)] impl S { }
|
||||
//~^ ERROR: attribute should be applied to a struct, enum, or union
|
||||
//~| NOTE not a struct, enum, or union
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
|||
|
|
@ -91,6 +91,21 @@ LL | | }
|
|||
LL | | }
|
||||
| |_- not a free function, impl method or static
|
||||
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:137:8
|
||||
|
|
||||
LL | #[repr(C)]
|
||||
| ^
|
||||
LL |
|
||||
LL | / mod repr {
|
||||
LL | |
|
||||
LL | | mod inner { #![repr(C)] }
|
||||
LL | |
|
||||
... |
|
||||
LL | |
|
||||
LL | | }
|
||||
| |_- not a struct, enum, or union
|
||||
|
||||
error: attribute should be applied to an `extern crate` item
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:25:1
|
||||
|
|
||||
|
|
@ -235,7 +250,31 @@ error: attribute should be applied to a free function, impl method or static
|
|||
LL | #[export_name = "2200"] fn bar() {}
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ ----------- not a free function, impl method or static
|
||||
|
||||
error: aborting due to 34 previous errors
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:141:25
|
||||
|
|
||||
LL | mod inner { #![repr(C)] }
|
||||
| --------------------^---- not a struct, enum, or union
|
||||
|
||||
Some errors have detailed explanations: E0518, E0658.
|
||||
For more information about an error, try `rustc --explain E0518`.
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:145:12
|
||||
|
|
||||
LL | #[repr(C)] fn f() { }
|
||||
| ^ ---------- not a struct, enum, or union
|
||||
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:151:12
|
||||
|
|
||||
LL | #[repr(C)] type T = S;
|
||||
| ^ ----------- not a struct, enum, or union
|
||||
|
||||
error[E0517]: attribute should be applied to a struct, enum, or union
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:155:12
|
||||
|
|
||||
LL | #[repr(C)] impl S { }
|
||||
| ^ ---------- not a struct, enum, or union
|
||||
|
||||
error: aborting due to 39 previous errors
|
||||
|
||||
Some errors have detailed explanations: E0517, E0518, E0658.
|
||||
For more information about an error, try `rustc --explain E0517`.
|
||||
|
|
|
|||
|
|
@ -245,19 +245,6 @@ mod bench {
|
|||
impl S { }
|
||||
}
|
||||
|
||||
#[repr()]
|
||||
mod repr {
|
||||
mod inner { #![repr()] }
|
||||
|
||||
#[repr()] fn f() { }
|
||||
|
||||
struct S;
|
||||
|
||||
#[repr()] type T = S;
|
||||
|
||||
#[repr()] impl S { }
|
||||
}
|
||||
|
||||
#[path = "3800"]
|
||||
mod path {
|
||||
mod inner { #![path="3800"] }
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ LL | #[deny(x5100)] impl S { }
|
|||
| ^^^^^
|
||||
|
||||
warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:412:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:399:17
|
||||
|
|
||||
LL | mod inner { #![macro_escape] }
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
@ -181,7 +181,7 @@ LL | mod inner { #![macro_escape] }
|
|||
= help: try an outer attribute: `#[macro_use]`
|
||||
|
||||
warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:409:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:396:1
|
||||
|
|
||||
LL | #[macro_escape]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
|
@ -213,13 +213,13 @@ LL | #![warn(unused_attributes, unknown_lints)]
|
|||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[automatically_derived]` only has an effect on items
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:278:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:265:1
|
||||
|
|
||||
LL | #[automatically_derived]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: attribute should be applied to a free function, impl method or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:296:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:283:1
|
||||
|
|
||||
LL | #[no_mangle]
|
||||
| ^^^^^^^^^^^^
|
||||
|
|
@ -236,31 +236,31 @@ LL | | }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: `#[should_panic]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:336:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:323:1
|
||||
|
|
||||
LL | #[should_panic]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[ignore]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:354:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:341:1
|
||||
|
|
||||
LL | #[ignore]
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:389:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:376:1
|
||||
|
|
||||
LL | #[reexport_test_harness_main = "2900"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:429:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:416:1
|
||||
|
|
||||
LL | #[no_std]
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: attribute should be applied to a function
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:465:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:452:1
|
||||
|
|
||||
LL | #[cold]
|
||||
| ^^^^^^^
|
||||
|
|
@ -277,7 +277,7 @@ LL | | }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a foreign function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:494:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:481:1
|
||||
|
|
||||
LL | #[link_name = "1900"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -294,7 +294,7 @@ LL | | }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:533:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:520:1
|
||||
|
|
||||
LL | #[link_section = "1800"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -311,37 +311,37 @@ LL | | }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:624:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:611:1
|
||||
|
|
||||
LL | #[crate_name = "0900"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:643:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:630:1
|
||||
|
|
||||
LL | #[crate_type = "0800"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:662:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:649:1
|
||||
|
|
||||
LL | #[feature(x0600)]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:682:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:669:1
|
||||
|
|
||||
LL | #[no_main]
|
||||
| ^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:714:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:701:1
|
||||
|
|
||||
LL | #[recursion_limit="0200"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:733:1
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:720:1
|
||||
|
|
||||
LL | #[type_length_limit="0100"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -443,55 +443,55 @@ LL | #[macro_export] impl S { }
|
|||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[path]` only has an effect on modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:265:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:252:5
|
||||
|
|
||||
LL | #[path = "3800"] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[path]` only has an effect on modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:268:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:255:5
|
||||
|
|
||||
LL | #[path = "3800"] struct S;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[path]` only has an effect on modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:271:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:258:5
|
||||
|
|
||||
LL | #[path = "3800"] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[path]` only has an effect on modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:274:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:261:5
|
||||
|
|
||||
LL | #[path = "3800"] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[automatically_derived]` only has an effect on items
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:281:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:268:17
|
||||
|
|
||||
LL | mod inner { #![automatically_derived] }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[automatically_derived]` only has an effect on items
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:284:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:271:5
|
||||
|
|
||||
LL | #[automatically_derived] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[automatically_derived]` only has an effect on items
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:287:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:274:5
|
||||
|
|
||||
LL | #[automatically_derived] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[automatically_derived]` only has an effect on items
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:290:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:277:5
|
||||
|
|
||||
LL | #[automatically_derived] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: attribute should be applied to a free function, impl method or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:301:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:288:17
|
||||
|
|
||||
LL | mod inner { #![no_mangle] }
|
||||
| ------------^^^^^^^^^^^^^-- not a free function, impl method or static
|
||||
|
|
@ -499,7 +499,7 @@ LL | mod inner { #![no_mangle] }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a free function, impl method or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:308:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:295:5
|
||||
|
|
||||
LL | #[no_mangle] struct S;
|
||||
| ^^^^^^^^^^^^ --------- not a free function, impl method or static
|
||||
|
|
@ -507,7 +507,7 @@ LL | #[no_mangle] struct S;
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a free function, impl method or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:313:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:300:5
|
||||
|
|
||||
LL | #[no_mangle] type T = S;
|
||||
| ^^^^^^^^^^^^ ----------- not a free function, impl method or static
|
||||
|
|
@ -515,7 +515,7 @@ LL | #[no_mangle] type T = S;
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a free function, impl method or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:318:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:305:5
|
||||
|
|
||||
LL | #[no_mangle] impl S { }
|
||||
| ^^^^^^^^^^^^ ---------- not a free function, impl method or static
|
||||
|
|
@ -523,7 +523,7 @@ LL | #[no_mangle] impl S { }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a free function, impl method or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:324:9
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:311:9
|
||||
|
|
||||
LL | #[no_mangle] fn foo();
|
||||
| ^^^^^^^^^^^^ --------- not a free function, impl method or static
|
||||
|
|
@ -531,7 +531,7 @@ LL | #[no_mangle] fn foo();
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a free function, impl method or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:329:9
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:316:9
|
||||
|
|
||||
LL | #[no_mangle] fn bar() {}
|
||||
| ^^^^^^^^^^^^ ----------- not a free function, impl method or static
|
||||
|
|
@ -539,163 +539,163 @@ LL | #[no_mangle] fn bar() {}
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: `#[should_panic]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:339:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:326:17
|
||||
|
|
||||
LL | mod inner { #![should_panic] }
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[should_panic]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:344:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:331:5
|
||||
|
|
||||
LL | #[should_panic] struct S;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[should_panic]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:347:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:334:5
|
||||
|
|
||||
LL | #[should_panic] type T = S;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[should_panic]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:350:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:337:5
|
||||
|
|
||||
LL | #[should_panic] impl S { }
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[ignore]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:357:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:344:17
|
||||
|
|
||||
LL | mod inner { #![ignore] }
|
||||
| ^^^^^^^^^^
|
||||
|
||||
warning: `#[ignore]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:362:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:349:5
|
||||
|
|
||||
LL | #[ignore] struct S;
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: `#[ignore]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:365:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:352:5
|
||||
|
|
||||
LL | #[ignore] type T = S;
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: `#[ignore]` only has an effect on functions
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:368:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:355:5
|
||||
|
|
||||
LL | #[ignore] impl S { }
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: `#[no_implicit_prelude]` only has an effect on modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:376:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:363:5
|
||||
|
|
||||
LL | #[no_implicit_prelude] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[no_implicit_prelude]` only has an effect on modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:379:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:366:5
|
||||
|
|
||||
LL | #[no_implicit_prelude] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[no_implicit_prelude]` only has an effect on modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:382:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:369:5
|
||||
|
|
||||
LL | #[no_implicit_prelude] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[no_implicit_prelude]` only has an effect on modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:385:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:372:5
|
||||
|
|
||||
LL | #[no_implicit_prelude] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be in the root module
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:392:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:379:17
|
||||
|
|
||||
LL | mod inner { #![reexport_test_harness_main="2900"] }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:395:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:382:5
|
||||
|
|
||||
LL | #[reexport_test_harness_main = "2900"] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:398:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:385:5
|
||||
|
|
||||
LL | #[reexport_test_harness_main = "2900"] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:401:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:388:5
|
||||
|
|
||||
LL | #[reexport_test_harness_main = "2900"] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:404:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:391:5
|
||||
|
|
||||
LL | #[reexport_test_harness_main = "2900"] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[macro_escape]` only has an effect on `extern crate` and modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:416:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:403:5
|
||||
|
|
||||
LL | #[macro_escape] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[macro_escape]` only has an effect on `extern crate` and modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:419:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:406:5
|
||||
|
|
||||
LL | #[macro_escape] struct S;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[macro_escape]` only has an effect on `extern crate` and modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:422:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:409:5
|
||||
|
|
||||
LL | #[macro_escape] type T = S;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: `#[macro_escape]` only has an effect on `extern crate` and modules
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:425:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:412:5
|
||||
|
|
||||
LL | #[macro_escape] impl S { }
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be in the root module
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:432:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:419:17
|
||||
|
|
||||
LL | mod inner { #![no_std] }
|
||||
| ^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:435:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:422:5
|
||||
|
|
||||
LL | #[no_std] fn f() { }
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:438:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:425:5
|
||||
|
|
||||
LL | #[no_std] struct S;
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:441:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:428:5
|
||||
|
|
||||
LL | #[no_std] type T = S;
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:444:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:431:5
|
||||
|
|
||||
LL | #[no_std] impl S { }
|
||||
| ^^^^^^^^^
|
||||
|
||||
warning: attribute should be applied to a function
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:471:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:458:17
|
||||
|
|
||||
LL | mod inner { #![cold] }
|
||||
| ------------^^^^^^^^-- not a function
|
||||
|
|
@ -703,7 +703,7 @@ LL | mod inner { #![cold] }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a function
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:478:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:465:5
|
||||
|
|
||||
LL | #[cold] struct S;
|
||||
| ^^^^^^^ --------- not a function
|
||||
|
|
@ -711,7 +711,7 @@ LL | #[cold] struct S;
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a function
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:483:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:470:5
|
||||
|
|
||||
LL | #[cold] type T = S;
|
||||
| ^^^^^^^ ----------- not a function
|
||||
|
|
@ -719,7 +719,7 @@ LL | #[cold] type T = S;
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a function
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:488:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:475:5
|
||||
|
|
||||
LL | #[cold] impl S { }
|
||||
| ^^^^^^^ ---------- not a function
|
||||
|
|
@ -727,7 +727,7 @@ LL | #[cold] impl S { }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a foreign function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:500:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:487:5
|
||||
|
|
||||
LL | #[link_name = "1900"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
@ -737,13 +737,13 @@ LL | extern "C" { }
|
|||
|
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
help: try `#[link(name = "1900")]` instead
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:500:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:487:5
|
||||
|
|
||||
LL | #[link_name = "1900"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: attribute should be applied to a foreign function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:507:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:494:17
|
||||
|
|
||||
LL | mod inner { #![link_name="1900"] }
|
||||
| ------------^^^^^^^^^^^^^^^^^^^^-- not a foreign function or static
|
||||
|
|
@ -751,7 +751,7 @@ LL | mod inner { #![link_name="1900"] }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a foreign function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:512:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:499:5
|
||||
|
|
||||
LL | #[link_name = "1900"] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ ---------- not a foreign function or static
|
||||
|
|
@ -759,7 +759,7 @@ LL | #[link_name = "1900"] fn f() { }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a foreign function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:517:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:504:5
|
||||
|
|
||||
LL | #[link_name = "1900"] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ --------- not a foreign function or static
|
||||
|
|
@ -767,7 +767,7 @@ LL | #[link_name = "1900"] struct S;
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a foreign function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:522:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:509:5
|
||||
|
|
||||
LL | #[link_name = "1900"] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ ----------- not a foreign function or static
|
||||
|
|
@ -775,7 +775,7 @@ LL | #[link_name = "1900"] type T = S;
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a foreign function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:527:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:514:5
|
||||
|
|
||||
LL | #[link_name = "1900"] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^ ---------- not a foreign function or static
|
||||
|
|
@ -783,7 +783,7 @@ LL | #[link_name = "1900"] impl S { }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:539:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:526:17
|
||||
|
|
||||
LL | mod inner { #![link_section="1800"] }
|
||||
| ------------^^^^^^^^^^^^^^^^^^^^^^^-- not a function or static
|
||||
|
|
@ -791,7 +791,7 @@ LL | mod inner { #![link_section="1800"] }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:546:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:533:5
|
||||
|
|
||||
LL | #[link_section = "1800"] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ --------- not a function or static
|
||||
|
|
@ -799,7 +799,7 @@ LL | #[link_section = "1800"] struct S;
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:551:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:538:5
|
||||
|
|
||||
LL | #[link_section = "1800"] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ ----------- not a function or static
|
||||
|
|
@ -807,7 +807,7 @@ LL | #[link_section = "1800"] type T = S;
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: attribute should be applied to a function or static
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:556:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:543:5
|
||||
|
|
||||
LL | #[link_section = "1800"] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ ---------- not a function or static
|
||||
|
|
@ -815,181 +815,181 @@ LL | #[link_section = "1800"] impl S { }
|
|||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
warning: crate-level attribute should be in the root module
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:627:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:614:17
|
||||
|
|
||||
LL | mod inner { #![crate_name="0900"] }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:630:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:617:5
|
||||
|
|
||||
LL | #[crate_name = "0900"] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:633:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:620:5
|
||||
|
|
||||
LL | #[crate_name = "0900"] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:636:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:623:5
|
||||
|
|
||||
LL | #[crate_name = "0900"] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:639:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:626:5
|
||||
|
|
||||
LL | #[crate_name = "0900"] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be in the root module
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:646:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:633:17
|
||||
|
|
||||
LL | mod inner { #![crate_type="0800"] }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:649:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:636:5
|
||||
|
|
||||
LL | #[crate_type = "0800"] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:652:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:639:5
|
||||
|
|
||||
LL | #[crate_type = "0800"] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:655:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:642:5
|
||||
|
|
||||
LL | #[crate_type = "0800"] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:658:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:645:5
|
||||
|
|
||||
LL | #[crate_type = "0800"] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be in the root module
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:665:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:652:17
|
||||
|
|
||||
LL | mod inner { #![feature(x0600)] }
|
||||
| ^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:668:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:655:5
|
||||
|
|
||||
LL | #[feature(x0600)] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:671:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:658:5
|
||||
|
|
||||
LL | #[feature(x0600)] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:674:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:661:5
|
||||
|
|
||||
LL | #[feature(x0600)] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:677:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:664:5
|
||||
|
|
||||
LL | #[feature(x0600)] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be in the root module
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:685:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:672:17
|
||||
|
|
||||
LL | mod inner { #![no_main] }
|
||||
| ^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:688:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:675:5
|
||||
|
|
||||
LL | #[no_main] fn f() { }
|
||||
| ^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:691:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:678:5
|
||||
|
|
||||
LL | #[no_main] struct S;
|
||||
| ^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:694:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:681:5
|
||||
|
|
||||
LL | #[no_main] type T = S;
|
||||
| ^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:697:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:684:5
|
||||
|
|
||||
LL | #[no_main] impl S { }
|
||||
| ^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be in the root module
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:717:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:704:17
|
||||
|
|
||||
LL | mod inner { #![recursion_limit="0200"] }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:720:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:707:5
|
||||
|
|
||||
LL | #[recursion_limit="0200"] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:723:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:710:5
|
||||
|
|
||||
LL | #[recursion_limit="0200"] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:726:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:713:5
|
||||
|
|
||||
LL | #[recursion_limit="0200"] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:729:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:716:5
|
||||
|
|
||||
LL | #[recursion_limit="0200"] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be in the root module
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:736:17
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:723:17
|
||||
|
|
||||
LL | mod inner { #![type_length_limit="0100"] }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:739:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:726:5
|
||||
|
|
||||
LL | #[type_length_limit="0100"] fn f() { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:742:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:729:5
|
||||
|
|
||||
LL | #[type_length_limit="0100"] struct S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:745:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:732:5
|
||||
|
|
||||
LL | #[type_length_limit="0100"] type T = S;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:748:5
|
||||
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:735:5
|
||||
|
|
||||
LL | #[type_length_limit="0100"] impl S { }
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
|
|
|||
108
src/test/ui/lint/unused/unused-attr-duplicate.rs
Normal file
108
src/test/ui/lint/unused/unused-attr-duplicate.rs
Normal file
|
|
@ -0,0 +1,108 @@
|
|||
// 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
|
||||
#![crate_type = "bin"]
|
||||
#![crate_type = "rlib"] //~ 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() {}
|
||||
306
src/test/ui/lint/unused/unused-attr-duplicate.stderr
Normal file
306
src/test/ui/lint/unused/unused-attr-duplicate.stderr
Normal file
|
|
@ -0,0 +1,306 @@
|
|||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:36:1
|
||||
|
|
||||
LL | #[no_link]
|
||||
| ^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/unused-attr-duplicate.rs:12:9
|
||||
|
|
||||
LL | #![deny(unused_attributes)]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:35:1
|
||||
|
|
||||
LL | #[no_link]
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:40:1
|
||||
|
|
||||
LL | #[macro_use]
|
||||
| ^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:39:1
|
||||
|
|
||||
LL | #[macro_use]
|
||||
| ^^^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:50:1
|
||||
|
|
||||
LL | #[path = "bar.rs"]
|
||||
| ^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:49:1
|
||||
|
|
||||
LL | #[path = "auxiliary/lint_unused_extern_crate.rs"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:56:1
|
||||
|
|
||||
LL | #[ignore = "some text"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:55:1
|
||||
|
|
||||
LL | #[ignore]
|
||||
| ^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:58:1
|
||||
|
|
||||
LL | #[should_panic(expected = "values don't match")]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:57:1
|
||||
|
|
||||
LL | #[should_panic]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:63:1
|
||||
|
|
||||
LL | #[must_use = "some message"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:62:1
|
||||
|
|
||||
LL | #[must_use]
|
||||
| ^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:69:1
|
||||
|
|
||||
LL | #[non_exhaustive]
|
||||
| ^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:68:1
|
||||
|
|
||||
LL | #[non_exhaustive]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:73:1
|
||||
|
|
||||
LL | #[automatically_derived]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:72:1
|
||||
|
|
||||
LL | #[automatically_derived]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:77:1
|
||||
|
|
||||
LL | #[inline(never)]
|
||||
| ^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:76:1
|
||||
|
|
||||
LL | #[inline(always)]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:80:1
|
||||
|
|
||||
LL | #[cold]
|
||||
| ^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:79:1
|
||||
|
|
||||
LL | #[cold]
|
||||
| ^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:82:1
|
||||
|
|
||||
LL | #[track_caller]
|
||||
| ^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:81:1
|
||||
|
|
||||
LL | #[track_caller]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:95:1
|
||||
|
|
||||
LL | #[export_name = "exported_symbol_name"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:97:1
|
||||
|
|
||||
LL | #[export_name = "exported_symbol_name2"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:101:1
|
||||
|
|
||||
LL | #[no_mangle]
|
||||
| ^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:100:1
|
||||
|
|
||||
LL | #[no_mangle]
|
||||
| ^^^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:105:1
|
||||
|
|
||||
LL | #[used]
|
||||
| ^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:104:1
|
||||
|
|
||||
LL | #[used]
|
||||
| ^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:89:5
|
||||
|
|
||||
LL | #[link_name = "this_does_not_exist"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:91:5
|
||||
|
|
||||
LL | #[link_name = "rust_dbg_extern_identity_u32"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:14:1
|
||||
|
|
||||
LL | #![crate_name = "unused_attr_duplicate2"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:13:1
|
||||
|
|
||||
LL | #![crate_name = "unused_attr_duplicate"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:17:1
|
||||
|
|
||||
LL | #![crate_type = "rlib"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:16:1
|
||||
|
|
||||
LL | #![crate_type = "bin"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:20:1
|
||||
|
|
||||
LL | #![recursion_limit = "256"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:19:1
|
||||
|
|
||||
LL | #![recursion_limit = "128"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:23:1
|
||||
|
|
||||
LL | #![type_length_limit = "1"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:22:1
|
||||
|
|
||||
LL | #![type_length_limit = "1048576"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:26:1
|
||||
|
|
||||
LL | #![no_std]
|
||||
| ^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:25:1
|
||||
|
|
||||
LL | #![no_std]
|
||||
| ^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:28:1
|
||||
|
|
||||
LL | #![no_implicit_prelude]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:27:1
|
||||
|
|
||||
LL | #![no_implicit_prelude]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:30:1
|
||||
|
|
||||
LL | #![windows_subsystem = "windows"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:29:1
|
||||
|
|
||||
LL | #![windows_subsystem = "console"]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:33:1
|
||||
|
|
||||
LL | #![no_builtins]
|
||||
| ^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:32:1
|
||||
|
|
||||
LL | #![no_builtins]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: unused attribute
|
||||
--> $DIR/unused-attr-duplicate.rs:43:5
|
||||
|
|
||||
LL | #[macro_export]
|
||||
| ^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/unused-attr-duplicate.rs:42:5
|
||||
|
|
||||
LL | #[macro_export]
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 24 previous errors
|
||||
|
||||
|
|
@ -2,13 +2,14 @@ warning: unused attribute
|
|||
--> $DIR/macro-use-all-and-none.rs:7:1
|
||||
|
|
||||
LL | #[macro_use()]
|
||||
| ^^^^^^^^^^^^^^
|
||||
| ^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/macro-use-all-and-none.rs:4:9
|
||||
|
|
||||
LL | #![warn(unused_attributes)]
|
||||
| ^^^^^^^^^^^^^^^^^
|
||||
= note: attribute `macro_use` with an empty list has no effect
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
||||
|
|
|
|||
|
|
@ -4,9 +4,8 @@
|
|||
|
||||
#[link(name = "foo", kind = "raw-dylib")]
|
||||
extern "C" {
|
||||
#[link_ordinal(1)]
|
||||
#[link_ordinal(1)] //~ ERROR multiple `link_ordinal` attributes
|
||||
#[link_ordinal(2)]
|
||||
//~^ ERROR multiple `link_ordinal` attributes on a single definition
|
||||
fn foo();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -7,7 +7,13 @@ LL | #![feature(raw_dylib)]
|
|||
= note: `#[warn(incomplete_features)]` on by default
|
||||
= note: see issue #58713 <https://github.com/rust-lang/rust/issues/58713> for more information
|
||||
|
||||
error: multiple `link_ordinal` attributes on a single definition
|
||||
error: multiple `link_ordinal` attributes
|
||||
--> $DIR/link-ordinal-multiple.rs:7:5
|
||||
|
|
||||
LL | #[link_ordinal(1)]
|
||||
| ^^^^^^^^^^^^^^^^^^ help: remove this attribute
|
||||
|
|
||||
note: attribute also specified here
|
||||
--> $DIR/link-ordinal-multiple.rs:8:5
|
||||
|
|
||||
LL | #[link_ordinal(2)]
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue