Add checks for more empty attributes.

This commit is contained in:
Eric Huss 2021-09-05 17:16:28 -07:00
parent 67a5b193c1
commit 4c60ea8228
7 changed files with 255 additions and 120 deletions

View file

@ -173,8 +173,17 @@ impl CheckAttrVisitor<'tcx> {
}
// Warn on useless empty attributes.
if matches!(attr.name_or_empty(), sym::macro_use)
&& attr.meta_item_list().map_or(false, |list| list.is_empty())
if matches!(
attr.name_or_empty(),
sym::macro_use
| sym::allow
| sym::warn
| sym::deny
| sym::forbid
| sym::feature
| sym::repr
| sym::target_feature
) && attr.meta_item_list().map_or(false, |list| list.is_empty())
{
self.tcx.struct_span_lint_hir(UNUSED_ATTRIBUTES, hir_id, attr.span, |lint| {
lint.build("unused attribute")

View 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() {}

View 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

View file

@ -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() {}

View file

@ -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`.

View file

@ -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"] }

View file

@ -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 { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^