Rollup merge of #51401 - estebank:warn-repr, r=cramertj

Warn on `repr` without hints

Fix #51376.
This commit is contained in:
Mark Rousskov
2018-06-08 17:21:05 -06:00
committed by GitHub
8 changed files with 407 additions and 211 deletions
+6
View File
@@ -207,6 +207,12 @@
"potentially-conflicting impls were erroneously allowed"
}
declare_lint! {
pub BAD_REPR,
Warn,
"detects incorrect use of `repr` attribute"
}
declare_lint! {
pub DEPRECATED,
Warn,
+73
View File
@@ -673,6 +673,79 @@ fn check_trait_item(&mut self, cx: &EarlyContext, it: &ast::TraitItem) {
}
}
/// Checks for incorrect use use of `repr` attributes.
#[derive(Clone)]
pub struct BadRepr;
impl LintPass for BadRepr {
fn get_lints(&self) -> LintArray {
lint_array!()
}
}
impl EarlyLintPass for BadRepr {
fn check_attribute(&mut self, cx: &EarlyContext, attr: &ast::Attribute) {
if attr.name() == "repr" {
let list = attr.meta_item_list();
let repr_str = |lit: &str| { format!("#[repr({})]", lit) };
// Emit warnings with `repr` either has a literal assignment (`#[repr = "C"]`) or
// no hints (``#[repr]`)
let has_hints = list.as_ref().map(|ref list| !list.is_empty()).unwrap_or(false);
if !has_hints {
let mut suggested = false;
let mut warn = if let Some(ref lit) = attr.value_str() {
// avoid warning about empty `repr` on `#[repr = "foo"]`
let mut warn = cx.struct_span_lint(
BAD_REPR,
attr.span,
"`repr` attribute isn't configurable with a literal",
);
match format!("{}", lit).as_ref() {
| "C" | "packed" | "rust" | "transparent"
| "u8" | "u16" | "u32" | "u64" | "u128" | "usize"
| "i8" | "i16" | "i32" | "i64" | "i128" | "isize" => {
// if the literal could have been a valid `repr` arg,
// suggest the correct syntax
warn.span_suggestion(
attr.span,
"give `repr` a hint",
repr_str(&lit.as_str()),
);
suggested = true;
}
_ => { // the literal wasn't a valid `repr` arg
warn.span_label(attr.span, "needs a hint");
}
};
warn
} else {
let mut warn = cx.struct_span_lint(
BAD_REPR,
attr.span,
"`repr` attribute must have a hint",
);
warn.span_label(attr.span, "needs a hint");
warn
};
if !suggested {
warn.help(&format!(
"valid hints include `{}`, `{}`, `{}` and `{}`",
repr_str("C"),
repr_str("packed"),
repr_str("rust"),
repr_str("transparent"),
));
warn.note("for more information, visit \
<https://doc.rust-lang.org/reference/type-layout.html>");
}
warn.emit();
}
}
}
}
/// Checks for use of attributes which have been deprecated.
#[derive(Clone)]
pub struct DeprecatedAttr {
+1
View File
@@ -107,6 +107,7 @@ macro_rules! add_lint_group {
UnusedImportBraces,
AnonymousParameters,
UnusedDocComment,
BadRepr,
);
add_early_builtin_with_new!(sess,
+2 -1
View File
@@ -34,6 +34,7 @@ fn main() {
#[repr]
let _y = "123";
//~^^ ERROR attribute should not be applied to a statement
//~| WARN `repr` attribute must have a hint
fn foo() {}
@@ -44,5 +45,5 @@ fn foo() {}
let _z = #[repr] 1;
//~^ ERROR attribute should not be applied to an expression
//~| WARN `repr` attribute must have a hint
}
@@ -59,7 +59,9 @@
#![start = "x4300"] //~ WARN unused attribute
// see issue-43106-gating-of-test.rs for crate-level; but non crate-level is below at "4200"
// see issue-43106-gating-of-bench.rs for crate-level; but non crate-level is below at "4100"
#![repr = "3900"] //~ WARN unused attribute
#![repr = "3900"]
//~^ WARN unused attribute
//~| WARN `repr` attribute isn't configurable with a literal
#![path = "3800"] //~ WARN unused attribute
#![abi = "3700"] //~ WARN unused attribute
#![automatically_derived = "3600"] //~ WARN unused attribute
@@ -309,20 +311,25 @@ impl S { }
#[repr = "3900"]
//~^ WARN unused attribute
//~| WARN `repr` attribute isn't configurable with a literal
mod repr {
mod inner { #![repr="3900"] }
//~^ WARN unused attribute
//~| WARN `repr` attribute isn't configurable with a literal
#[repr = "3900"] fn f() { }
//~^ WARN unused attribute
//~| WARN `repr` attribute isn't configurable with a literal
struct S;
#[repr = "3900"] type T = S;
//~^ WARN unused attribute
//~| WARN `repr` attribute isn't configurable with a literal
#[repr = "3900"] impl S { }
//~^ WARN unused attribute
//~| WARN `repr` attribute isn't configurable with a literal
}
#[path = "3800"]
@@ -1,11 +1,11 @@
warning: macro_escape is a deprecated synonym for macro_use
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:493:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:500:1
|
LL | #[macro_escape]
| ^^^^^^^^^^^^^^^
warning: macro_escape is a deprecated synonym for macro_use
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:496:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:503:17
|
LL | mod inner { #![macro_escape] }
| ^^^^^^^^^^^^^^^^
@@ -43,151 +43,206 @@ LL | #![deny (x5100)] //~ WARN unknown lint: `x5100`
| ^^^^^
warning: unknown lint: `x5400`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:112:8
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:114:8
|
LL | #[warn(x5400)]
| ^^^^^
warning: unknown lint: `x5400`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:115:25
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:117:25
|
LL | mod inner { #![warn(x5400)] }
| ^^^^^
warning: unknown lint: `x5400`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:118:12
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:120:12
|
LL | #[warn(x5400)] fn f() { }
| ^^^^^
warning: unknown lint: `x5400`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:121:12
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:123:12
|
LL | #[warn(x5400)] struct S;
| ^^^^^
warning: unknown lint: `x5400`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:124:12
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:126:12
|
LL | #[warn(x5400)] type T = S;
| ^^^^^
warning: unknown lint: `x5400`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:127:12
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:129:12
|
LL | #[warn(x5400)] impl S { }
| ^^^^^
warning: unknown lint: `x5300`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:131:9
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:133:9
|
LL | #[allow(x5300)]
| ^^^^^
warning: unknown lint: `x5300`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:134:26
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:136:26
|
LL | mod inner { #![allow(x5300)] }
| ^^^^^
warning: unknown lint: `x5300`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:137:13
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:139:13
|
LL | #[allow(x5300)] fn f() { }
| ^^^^^
warning: unknown lint: `x5300`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:140:13
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:142:13
|
LL | #[allow(x5300)] struct S;
| ^^^^^
warning: unknown lint: `x5300`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:143:13
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:145:13
|
LL | #[allow(x5300)] type T = S;
| ^^^^^
warning: unknown lint: `x5300`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:146:13
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:148:13
|
LL | #[allow(x5300)] impl S { }
| ^^^^^
warning: unknown lint: `x5200`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:150:10
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:152:10
|
LL | #[forbid(x5200)]
| ^^^^^
warning: unknown lint: `x5200`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:153:27
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:155:27
|
LL | mod inner { #![forbid(x5200)] }
| ^^^^^
warning: unknown lint: `x5200`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:156:14
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:158:14
|
LL | #[forbid(x5200)] fn f() { }
| ^^^^^
warning: unknown lint: `x5200`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:159:14
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:161:14
|
LL | #[forbid(x5200)] struct S;
| ^^^^^
warning: unknown lint: `x5200`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:162:14
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:164:14
|
LL | #[forbid(x5200)] type T = S;
| ^^^^^
warning: unknown lint: `x5200`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:165:14
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:167:14
|
LL | #[forbid(x5200)] impl S { }
| ^^^^^
warning: unknown lint: `x5100`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:169:8
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:171:8
|
LL | #[deny(x5100)]
| ^^^^^
warning: unknown lint: `x5100`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:172:25
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:174:25
|
LL | mod inner { #![deny(x5100)] }
| ^^^^^
warning: unknown lint: `x5100`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:175:12
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:177:12
|
LL | #[deny(x5100)] fn f() { }
| ^^^^^
warning: unknown lint: `x5100`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:178:12
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:180:12
|
LL | #[deny(x5100)] struct S;
| ^^^^^
warning: unknown lint: `x5100`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:181:12
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:183:12
|
LL | #[deny(x5100)] type T = S;
| ^^^^^
warning: unknown lint: `x5100`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:184:12
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:186:12
|
LL | #[deny(x5100)] impl S { }
| ^^^^^
warning: `repr` attribute isn't configurable with a literal
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:316:17
|
LL | mod inner { #![repr="3900"] }
| ^^^^^^^^^^^^^^^ needs a hint
|
= note: #[warn(bad_repr)] on by default
= help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>
warning: `repr` attribute isn't configurable with a literal
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:320:5
|
LL | #[repr = "3900"] fn f() { }
| ^^^^^^^^^^^^^^^^ needs a hint
|
= help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>
warning: `repr` attribute isn't configurable with a literal
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:326:5
|
LL | #[repr = "3900"] type T = S;
| ^^^^^^^^^^^^^^^^ needs a hint
|
= help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>
warning: `repr` attribute isn't configurable with a literal
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:330:5
|
LL | #[repr = "3900"] impl S { }
| ^^^^^^^^^^^^^^^^ needs a hint
|
= help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>
warning: `repr` attribute isn't configurable with a literal
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:312:1
|
LL | #[repr = "3900"]
| ^^^^^^^^^^^^^^^^ needs a hint
|
= help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>
warning: `repr` attribute isn't configurable with a literal
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:62:1
|
LL | #![repr = "3900"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ needs a hint
|
= help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:192:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:194:5
|
LL | #[macro_use] fn f() { }
| ^^^^^^^^^^^^
@@ -199,277 +254,277 @@ LL | #![warn(unused_attributes, unknown_lints)]
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:195:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:197:5
|
LL | #[macro_use] struct S;
| ^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:198:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:200:5
|
LL | #[macro_use] type T = S;
| ^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:201:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:203:5
|
LL | #[macro_use] impl S { }
| ^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:208:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:210:17
|
LL | mod inner { #![macro_export="4800"] }
| ^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:211:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:213:5
|
LL | #[macro_export = "4800"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:214:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:216:5
|
LL | #[macro_export = "4800"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:217:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:219:5
|
LL | #[macro_export = "4800"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:220:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:222:5
|
LL | #[macro_export = "4800"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:205:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:207:1
|
LL | #[macro_export = "4800"]
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:227:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:229:17
|
LL | mod inner { #![plugin_registrar="4700"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:232:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:234:5
|
LL | #[plugin_registrar = "4700"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:235:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:237:5
|
LL | #[plugin_registrar = "4700"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:238:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:240:5
|
LL | #[plugin_registrar = "4700"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:224:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:226:1
|
LL | #[plugin_registrar = "4700"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:245:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:247:17
|
LL | mod inner { #![main="4300"] }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:250:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:252:5
|
LL | #[main = "4400"] struct S;
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:253:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:255:5
|
LL | #[main = "4400"] type T = S;
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:256:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:258:5
|
LL | #[main = "4400"] impl S { }
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:242:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:244:1
|
LL | #[main = "4400"]
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:263:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:265:17
|
LL | mod inner { #![start="4300"] }
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:268:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:270:5
|
LL | #[start = "4300"] struct S;
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:271:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:273:5
|
LL | #[start = "4300"] type T = S;
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:274:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:276:5
|
LL | #[start = "4300"] impl S { }
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:260:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:262:1
|
LL | #[start = "4300"]
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:313:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:316:17
|
LL | mod inner { #![repr="3900"] }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:316:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:320:5
|
LL | #[repr = "3900"] fn f() { }
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:321:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:326:5
|
LL | #[repr = "3900"] type T = S;
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:324:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:330:5
|
LL | #[repr = "3900"] impl S { }
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:310:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:312:1
|
LL | #[repr = "3900"]
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:332:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:339:5
|
LL | #[path = "3800"] fn f() { }
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:335:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:342:5
|
LL | #[path = "3800"] struct S;
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:338:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:345:5
|
LL | #[path = "3800"] type T = S;
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:341:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:348:5
|
LL | #[path = "3800"] impl S { }
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:348:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:355:17
|
LL | mod inner { #![abi="3700"] }
| ^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:351:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:358:5
|
LL | #[abi = "3700"] fn f() { }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:354:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:361:5
|
LL | #[abi = "3700"] struct S;
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:357:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:364:5
|
LL | #[abi = "3700"] type T = S;
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:360:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:367:5
|
LL | #[abi = "3700"] impl S { }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:345:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:352:1
|
LL | #[abi = "3700"]
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:367:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:374:17
|
LL | mod inner { #![automatically_derived="3600"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:370:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:377:5
|
LL | #[automatically_derived = "3600"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:373:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:380:5
|
LL | #[automatically_derived = "3600"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:376:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:383:5
|
LL | #[automatically_derived = "3600"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:379:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:386:5
|
LL | #[automatically_derived = "3600"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:364:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:371:1
|
LL | #[automatically_derived = "3600"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: function is marked #[no_mangle], but not exported
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:387:27
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:394:27
|
LL | #[no_mangle = "3500"] fn f() { }
| -^^^^^^^^^
@@ -479,709 +534,709 @@ LL | #[no_mangle = "3500"] fn f() { }
= note: #[warn(private_no_mangle_fns)] on by default
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:400:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:407:17
|
LL | mod inner { #![no_link="3400"] }
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:403:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:410:5
|
LL | #[no_link = "3400"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:406:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:413:5
|
LL | #[no_link = "3400"] struct S;
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:409:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:416:5
|
LL | #[no_link = "3400"]type T = S;
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:412:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:419:5
|
LL | #[no_link = "3400"] impl S { }
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:397:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:404:1
|
LL | #[no_link = "3400"]
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:419:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:426:17
|
LL | mod inner { #![should_panic="3200"] }
| ^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:422:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:429:5
|
LL | #[should_panic = "3200"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:425:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:432:5
|
LL | #[should_panic = "3200"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:428:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:435:5
|
LL | #[should_panic = "3200"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:431:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:438:5
|
LL | #[should_panic = "3200"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:416:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:423:1
|
LL | #[should_panic = "3200"]
| ^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:438:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:445:17
|
LL | mod inner { #![ignore="3100"] }
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:441:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:448:5
|
LL | #[ignore = "3100"] fn f() { }
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:444:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:451:5
|
LL | #[ignore = "3100"] struct S;
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:447:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:454:5
|
LL | #[ignore = "3100"] type T = S;
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:450:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:457:5
|
LL | #[ignore = "3100"] impl S { }
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:435:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:442:1
|
LL | #[ignore = "3100"]
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:457:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:464:17
|
LL | mod inner { #![no_implicit_prelude="3000"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:460:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:467:5
|
LL | #[no_implicit_prelude = "3000"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:463:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:470:5
|
LL | #[no_implicit_prelude = "3000"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:466:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:473:5
|
LL | #[no_implicit_prelude = "3000"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:469:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:476:5
|
LL | #[no_implicit_prelude = "3000"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:454:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:461:1
|
LL | #[no_implicit_prelude = "3000"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:476:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:483:17
|
LL | mod inner { #![reexport_test_harness_main="2900"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:479:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:486:5
|
LL | #[reexport_test_harness_main = "2900"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:482:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:489:5
|
LL | #[reexport_test_harness_main = "2900"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:485:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:492:5
|
LL | #[reexport_test_harness_main = "2900"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:488:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:495:5
|
LL | #[reexport_test_harness_main = "2900"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:473:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:480:1
|
LL | #[reexport_test_harness_main = "2900"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:499:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:506:5
|
LL | #[macro_escape] fn f() { }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:502:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:509:5
|
LL | #[macro_escape] struct S;
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:505:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:512:5
|
LL | #[macro_escape] type T = S;
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:508:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:515:5
|
LL | #[macro_escape] impl S { }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:516:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:523:17
|
LL | mod inner { #![no_std="2600"] }
| ^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:516:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:523:17
|
LL | mod inner { #![no_std="2600"] }
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:520:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:527:5
|
LL | #[no_std = "2600"] fn f() { }
| ^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:520:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:527:5
|
LL | #[no_std = "2600"] fn f() { }
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:524:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:531:5
|
LL | #[no_std = "2600"] struct S;
| ^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:524:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:531:5
|
LL | #[no_std = "2600"] struct S;
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:528:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:535:5
|
LL | #[no_std = "2600"] 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:528:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:535:5
|
LL | #[no_std = "2600"] type T = S;
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:532:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:539:5
|
LL | #[no_std = "2600"] impl S { }
| ^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:532:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:539:5
|
LL | #[no_std = "2600"] impl S { }
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:512:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:519:1
|
LL | #[no_std = "2600"]
| ^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:512:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:519:1
|
LL | #[no_std = "2600"]
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:671:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:678:17
|
LL | mod inner { #![crate_name="0900"] }
| ^^^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:671:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:678:17
|
LL | mod inner { #![crate_name="0900"] }
| ^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:675:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:682: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:675:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:682:5
|
LL | #[crate_name = "0900"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:679:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:686: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:679:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:686:5
|
LL | #[crate_name = "0900"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:683:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:690: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:683:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:690:5
|
LL | #[crate_name = "0900"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:687:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:694:5
|
LL | #[crate_name = "0900"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:687:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:694:5
|
LL | #[crate_name = "0900"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:667:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:674: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:667:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:674:1
|
LL | #[crate_name = "0900"]
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:696:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:703:17
|
LL | mod inner { #![crate_type="0800"] }
| ^^^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:696:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:703:17
|
LL | mod inner { #![crate_type="0800"] }
| ^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:700:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:707: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:700:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:707:5
|
LL | #[crate_type = "0800"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:704:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:711: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:704:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:711:5
|
LL | #[crate_type = "0800"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:708:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:715: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:708:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:715:5
|
LL | #[crate_type = "0800"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:712:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:719:5
|
LL | #[crate_type = "0800"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:712:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:719:5
|
LL | #[crate_type = "0800"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:692:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:699: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:692:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:699:1
|
LL | #[crate_type = "0800"]
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:721:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:728:17
|
LL | mod inner { #![feature(x0600)] }
| ^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:721:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:728:17
|
LL | mod inner { #![feature(x0600)] }
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:725:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:732: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:725:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:732:5
|
LL | #[feature(x0600)] fn f() { }
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:729:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:736: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:729:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:736:5
|
LL | #[feature(x0600)] struct S;
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:733:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:740: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:733:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:740:5
|
LL | #[feature(x0600)] type T = S;
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:737:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:744:5
|
LL | #[feature(x0600)] impl S { }
| ^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:737:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:744:5
|
LL | #[feature(x0600)] impl S { }
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:717:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:724: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:717:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:724:1
|
LL | #[feature(x0600)]
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:747:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:754:17
|
LL | mod inner { #![no_main="0400"] }
| ^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:747:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:754:17
|
LL | mod inner { #![no_main="0400"] }
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:751:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:758:5
|
LL | #[no_main = "0400"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:751:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:758:5
|
LL | #[no_main = "0400"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:755:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:762:5
|
LL | #[no_main = "0400"] struct S;
| ^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:755:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:762:5
|
LL | #[no_main = "0400"] struct S;
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:759:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:766:5
|
LL | #[no_main = "0400"] 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:759:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:766:5
|
LL | #[no_main = "0400"] type T = S;
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:763:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:770:5
|
LL | #[no_main = "0400"] impl S { }
| ^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:763:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:770:5
|
LL | #[no_main = "0400"] impl S { }
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:743:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:750:1
|
LL | #[no_main = "0400"]
| ^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:743:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:750:1
|
LL | #[no_main = "0400"]
| ^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:785:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:792:17
|
LL | mod inner { #![recursion_limit="0200"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:785:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:792:17
|
LL | mod inner { #![recursion_limit="0200"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:789:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:796: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:789:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:796:5
|
LL | #[recursion_limit="0200"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:793:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:800: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:793:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:800:5
|
LL | #[recursion_limit="0200"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:797:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:804: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:797:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:804:5
|
LL | #[recursion_limit="0200"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:801:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:808:5
|
LL | #[recursion_limit="0200"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:801:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:808:5
|
LL | #[recursion_limit="0200"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:781:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:788: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:781:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:788:1
|
LL | #[recursion_limit="0200"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:810:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:817:17
|
LL | mod inner { #![type_length_limit="0100"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:810:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:817:17
|
LL | mod inner { #![type_length_limit="0100"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:814:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:821: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:814:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:821:5
|
LL | #[type_length_limit="0100"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:818:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:825: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:818:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:825:5
|
LL | #[type_length_limit="0100"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:822:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:829: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:822:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:829:5
|
LL | #[type_length_limit="0100"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:826:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:833:5
|
LL | #[type_length_limit="0100"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: #![foo]
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:826:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:833:5
|
LL | #[type_length_limit="0100"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:806:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:813:1
|
LL | #[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:806:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:813:1
|
LL | #[type_length_limit="0100"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
@@ -1213,53 +1268,53 @@ LL | #![start = "x4300"] //~ WARN unused attribute
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:62:1
|
LL | #![repr = "3900"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:63:1
|
LL | #![path = "3800"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:64:1
|
LL | #![abi = "3700"] //~ WARN unused attribute
LL | #![repr = "3900"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:65:1
|
LL | #![automatically_derived = "3600"] //~ WARN unused attribute
LL | #![path = "3800"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:66:1
|
LL | #![abi = "3700"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:67:1
|
LL | #![no_link = "3400"] //~ WARN unused attribute
LL | #![automatically_derived = "3600"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:69:1
|
LL | #![no_link = "3400"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:71:1
|
LL | #![should_panic = "3200"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:70:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:72:1
|
LL | #![ignore = "3100"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:76:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:78:1
|
LL | #![proc_macro_derive = "2500"] //~ WARN unused attribute
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
error: compilation successful
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:837:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:844:1
|
LL | / fn main() { //~ ERROR compilation successful
LL | | println!("Hello World");
+28
View File
@@ -0,0 +1,28 @@
// Copyright 2018 The Rust Project Developers. See the COPYRIGHT
// file at the top-level directory of this distribution and at
// http://rust-lang.org/COPYRIGHT.
//
// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
// option. This file may not be copied, modified, or distributed
// except according to those terms.
// compile-pass
#[repr]
//^ WARN `repr` attribute must have a hint
struct _A {}
#[repr = "B"]
//^ WARN `repr` attribute isn't configurable with a literal
struct _B {}
#[repr = "C"]
//^ WARN `repr` attribute isn't configurable with a literal
struct _C {}
#[repr(C)]
struct _D {}
fn main() {}
+25
View File
@@ -0,0 +1,25 @@
warning: `repr` attribute must have a hint
--> $DIR/repr.rs:13:1
|
LL | #[repr]
| ^^^^^^^ needs a hint
|
= note: #[warn(bad_repr)] on by default
= help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>
warning: `repr` attribute isn't configurable with a literal
--> $DIR/repr.rs:17:1
|
LL | #[repr = "B"]
| ^^^^^^^^^^^^^ needs a hint
|
= help: valid hints include `#[repr(C)]`, `#[repr(packed)]`, `#[repr(rust)]` and `#[repr(transparent)]`
= note: for more information, visit <https://doc.rust-lang.org/reference/type-layout.html>
warning: `repr` attribute isn't configurable with a literal
--> $DIR/repr.rs:21:1
|
LL | #[repr = "C"]
| ^^^^^^^^^^^^^ help: give `repr` a hint: `#[repr(C)]`