Check placement of more attributes

This commit is contained in:
Caleb Zulawski 2020-06-14 00:47:42 -04:00
parent de921ab3c3
commit 4efe97a3d9
18 changed files with 816 additions and 354 deletions

View File

@ -71,6 +71,16 @@ impl CheckAttrVisitor<'tcx> {
self.check_track_caller(&attr.span, attrs, span, target)
} else if self.tcx.sess.check_name(attr, sym::doc) {
self.check_doc_alias(attr, hir_id, target)
} else if self.tcx.sess.check_name(attr, sym::cold) {
self.check_cold(&attr, span, target)
} else if self.tcx.sess.check_name(attr, sym::link_name) {
self.check_link_name(&attr, span, target)
} else if self.tcx.sess.check_name(attr, sym::no_link) {
self.check_no_link(&attr, span, target)
} else if self.tcx.sess.check_name(attr, sym::export_name) {
self.check_export_name(&attr, span, target)
} else if self.tcx.sess.check_name(attr, sym::link_section) {
self.check_link_section(&attr, span, target)
} else {
true
};
@ -277,6 +287,99 @@ impl CheckAttrVisitor<'tcx> {
true
}
/// Checks if `#[cold]` is applied to a non-function. Returns `true` if valid.
fn check_cold(&self, attr: &Attribute, span: &Span, target: Target) -> bool {
match target {
Target::Fn | Target::Method(..) | Target::ForeignFn => true,
_ => {
self.tcx
.sess
.struct_span_err(attr.span, "attribute should be applied to a function")
.span_label(*span, "not a function")
.emit();
false
}
}
}
/// Checks if `#[link_name]` is applied to an item other than a foreign function or static. Returns `true` if valid.
fn check_link_name(&self, attr: &Attribute, span: &Span, target: Target) -> bool {
if target == Target::ForeignFn || target == Target::ForeignStatic {
true
} else {
let mut err = self.tcx.sess.struct_span_err(
attr.span,
"attribute should be applied to a foreign function or static",
);
err.span_label(*span, "not a foreign function or static");
// See issue #47725
if target == Target::ForeignMod {
if let Some(value) = attr.value_str() {
err.span_help(
attr.span,
&format!(r#"try `#[link(name = "{}")]` instead"#, value),
);
} else {
err.span_help(attr.span, r#"try `#[link(name = "...")]` instead"#);
}
}
err.emit();
false
}
}
/// Checks if `#[no_link]` is applied to an `extern crate`. Returns `true` if valid.
fn check_no_link(&self, attr: &Attribute, span: &Span, target: Target) -> bool {
if target == Target::ExternCrate {
true
} else {
self.tcx
.sess
.struct_span_err(attr.span, "attribute should be applied to an `extern crate` item")
.span_label(*span, "not an `extern crate` item")
.emit();
false
}
}
/// Checks if `#[export_name]` is applied to a function or static. Returns `true` if valid.
fn check_export_name(&self, attr: &Attribute, span: &Span, target: Target) -> bool {
match target {
Target::Static | Target::Fn | Target::Method(..) => true,
_ => {
self.tcx
.sess
.struct_span_err(
attr.span,
"attribute should be applied to a function or static",
)
.span_label(*span, "not a function or static")
.emit();
false
}
}
}
/// Checks if `#[link_section]` is applied to a function or static. Returns `true` if valid.
fn check_link_section(&self, attr: &Attribute, span: &Span, target: Target) -> bool {
match target {
Target::Static | Target::Fn | Target::Method(..) => true,
_ => {
self.tcx
.sess
.struct_span_err(
attr.span,
"attribute should be applied to a function or static",
)
.span_label(*span, "not a function or static")
.emit();
false
}
}
}
/// Checks if the `#[repr]` attributes on `item` are valid.
fn check_repr(
&self,
@ -421,10 +524,8 @@ impl CheckAttrVisitor<'tcx> {
fn check_stmt_attributes(&self, stmt: &hir::Stmt<'_>) {
// When checking statements ignore expressions, they will be checked later
if let hir::StmtKind::Local(ref l) = stmt.kind {
self.check_attributes(l.hir_id, &l.attrs, &stmt.span, Target::Statement, None);
for attr in l.attrs.iter() {
if self.tcx.sess.check_name(attr, sym::inline) {
self.check_inline(l.hir_id, attr, &stmt.span, Target::Statement);
}
if self.tcx.sess.check_name(attr, sym::repr) {
self.emit_repr_error(
attr.span,
@ -442,10 +543,8 @@ impl CheckAttrVisitor<'tcx> {
hir::ExprKind::Closure(..) => Target::Closure,
_ => Target::Expression,
};
self.check_attributes(expr.hir_id, &expr.attrs, &expr.span, target, None);
for attr in expr.attrs.iter() {
if self.tcx.sess.check_name(attr, sym::inline) {
self.check_inline(expr.hir_id, attr, &expr.span, target);
}
if self.tcx.sess.check_name(attr, sym::repr) {
self.emit_repr_error(
attr.span,

View File

@ -2490,10 +2490,17 @@ fn codegen_fn_attrs(tcx: TyCtxt<'_>, id: DefId) -> CodegenFnAttrs {
codegen_fn_attrs.export_name = Some(s);
}
} else if tcx.sess.check_name(attr, sym::target_feature) {
if !tcx.features().target_feature_11 {
check_target_feature_safe_fn(tcx, id, attr.span);
} else if let Some(local_id) = id.as_local() {
if tcx.fn_sig(id).unsafety() == hir::Unsafety::Normal {
if !tcx.is_closure(id) && tcx.fn_sig(id).unsafety() == hir::Unsafety::Normal {
if !tcx.features().target_feature_11 {
let mut err = feature_err(
&tcx.sess.parse_sess,
sym::target_feature_11,
attr.span,
"`#[target_feature(..)]` can only be applied to `unsafe` functions",
);
err.span_label(tcx.def_span(id), "not an `unsafe` function");
err.emit();
} else if let Some(local_id) = id.as_local() {
check_target_feature_trait_unsafe(tcx, local_id, attr.span);
}
}
@ -2750,21 +2757,6 @@ fn check_link_name_xor_ordinal(
}
}
/// Checks the function annotated with `#[target_feature]` is unsafe,
/// reporting an error if it isn't.
fn check_target_feature_safe_fn(tcx: TyCtxt<'_>, id: DefId, attr_span: Span) {
if tcx.is_closure(id) || tcx.fn_sig(id).unsafety() == hir::Unsafety::Normal {
let mut err = feature_err(
&tcx.sess.parse_sess,
sym::target_feature_11,
attr_span,
"`#[target_feature(..)]` can only be applied to `unsafe` functions",
);
err.span_label(tcx.def_span(id), "not an `unsafe` function");
err.emit();
}
}
/// Checks the function annotated with `#[target_feature]` is not a safe
/// trait method implementation, reporting an error if it is.
fn check_target_feature_trait_unsafe(tcx: TyCtxt<'_>, id: LocalDefId, attr_span: Span) {

View File

@ -15,7 +15,7 @@ extern crate libc;
use libc::c_int;
#[link_name = "check_static_recursion_foreign_helper"]
#[link(name = "check_static_recursion_foreign_helper")]
extern "C" {
#[allow(dead_code)]
static test_static: c_int;

View File

@ -0,0 +1,171 @@
// This is testing whether various builtin attributes signals an
// error or warning when put in "weird" places.
//
// (This file sits on its own because it actually signals an error,
// which would mess up the treatment of other cases in
// issue-43106-gating-of-builtin-attrs.rs)
// ignore-tidy-linelength
// Crate-level is accepted, though it is almost certainly unused?
#![inline]
#[inline]
//~^ ERROR attribute should be applied to function or closure
mod inline {
//~^ NOTE not a function or closure
mod inner { #![inline] }
//~^ ERROR attribute should be applied to function or closure
//~| NOTE not a function or closure
#[inline = "2100"] fn f() { }
//~^ ERROR attribute must be of the form
//~| WARN this was previously accepted
//~| NOTE #[deny(ill_formed_attribute_input)]` on by default
//~| NOTE for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
#[inline] struct S;
//~^ ERROR attribute should be applied to function or closure
//~| NOTE not a function or closure
#[inline] type T = S;
//~^ ERROR attribute should be applied to function or closure
//~| NOTE not a function or closure
#[inline] impl S { }
//~^ ERROR attribute should be applied to function or closure
//~| NOTE not a function or closure
}
#[no_link]
//~^ ERROR attribute should be applied to an `extern crate` item
mod no_link {
//~^ NOTE not an `extern crate` item
mod inner { #![no_link] }
//~^ ERROR attribute should be applied to an `extern crate` item
//~| NOTE not an `extern crate` item
#[no_link] fn f() { }
//~^ ERROR attribute should be applied to an `extern crate` item
//~| NOTE not an `extern crate` item
#[no_link] struct S;
//~^ ERROR attribute should be applied to an `extern crate` item
//~| NOTE not an `extern crate` item
#[no_link]type T = S;
//~^ ERROR attribute should be applied to an `extern crate` item
//~| NOTE not an `extern crate` item
#[no_link] impl S { }
//~^ ERROR attribute should be applied to an `extern crate` item
//~| NOTE not an `extern crate` item
}
#[cold]
//~^ ERROR attribute should be applied to a function
mod cold {
//~^ NOTE not a function
mod inner { #![cold] }
//~^ ERROR attribute should be applied to a function
//~| NOTE not a function
#[cold] fn f() { }
#[cold] struct S;
//~^ ERROR attribute should be applied to a function
//~| NOTE not a function
#[cold] type T = S;
//~^ ERROR attribute should be applied to a function
//~| NOTE not a function
#[cold] impl S { }
//~^ ERROR attribute should be applied to a function
//~| NOTE not a function
}
#[export_name = "2200"]
//~^ ERROR attribute should be applied to a function or static
mod export_name {
//~^ NOTE not a function or static
mod inner { #![export_name="2200"] }
//~^ ERROR attribute should be applied to a function or static
//~| NOTE not a function or static
#[export_name = "2200"] fn f() { }
#[export_name = "2200"] struct S;
//~^ ERROR attribute should be applied to a function or static
//~| NOTE not a function or static
#[export_name = "2200"] type T = S;
//~^ ERROR attribute should be applied to a function or static
//~| NOTE not a function or static
#[export_name = "2200"] impl S { }
//~^ ERROR attribute should be applied to a function or static
//~| NOTE not a function or static
}
#[link_name = "1900"]
//~^ ERROR attribute should be applied to a foreign function or static
mod link_name {
//~^ NOTE not a foreign function or static
#[link_name = "1900"]
//~^ ERROR attribute should be applied to a foreign function or static
//~| HELP try `#[link(name = "1900")]` instead
extern { }
//~^ NOTE not a foreign function or static
mod inner { #![link_name="1900"] }
//~^ ERROR attribute should be applied to a foreign function or static
//~| NOTE not a foreign function or static
#[link_name = "1900"] fn f() { }
//~^ ERROR attribute should be applied to a foreign function or static
//~| NOTE not a foreign function or static
#[link_name = "1900"] struct S;
//~^ ERROR attribute should be applied to a foreign function or static
//~| NOTE not a foreign function or static
#[link_name = "1900"] type T = S;
//~^ ERROR attribute should be applied to a foreign function or static
//~| NOTE not a foreign function or static
#[link_name = "1900"] impl S { }
//~^ ERROR attribute should be applied to a foreign function or static
//~| NOTE not a foreign function or static
}
#[link_section = "1800"]
//~^ ERROR attribute should be applied to a function or static
mod link_section {
//~^ NOTE not a function or static
mod inner { #![link_section="1800"] }
//~^ ERROR attribute should be applied to a function or static
//~| NOTE not a function or static
#[link_section = "1800"] fn f() { }
#[link_section = "1800"] struct S;
//~^ ERROR attribute should be applied to a function or static
//~| NOTE not a function or static
#[link_section = "1800"] type T = S;
//~^ ERROR attribute should be applied to a function or static
//~| NOTE not a function or static
#[link_section = "1800"] impl S { }
//~^ ERROR attribute should be applied to a function or static
//~| NOTE not a function or static
}
fn main() {}

View File

@ -0,0 +1,274 @@
error: attribute must be of the form `#[inline]` or `#[inline(always|never)]`
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:22:5
|
LL | #[inline = "2100"] fn f() { }
| ^^^^^^^^^^^^^^^^^^
|
= note: `#[deny(ill_formed_attribute_input)]` on by default
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:13:1
|
LL | #[inline]
| ^^^^^^^^^
LL |
LL | / mod inline {
LL | |
LL | |
LL | | mod inner { #![inline] }
... |
LL | |
LL | | }
| |_- not a function or closure
error: attribute should be applied to an `extern crate` item
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:41:1
|
LL | #[no_link]
| ^^^^^^^^^^
LL |
LL | / mod no_link {
LL | |
LL | |
LL | | mod inner { #![no_link] }
... |
LL | |
LL | | }
| |_- not an `extern crate` item
error: attribute should be applied to a function
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:67:1
|
LL | #[cold]
| ^^^^^^^
LL |
LL | / mod cold {
LL | |
LL | |
LL | | mod inner { #![cold] }
... |
LL | |
LL | | }
| |_- not a function
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:91:1
|
LL | #[export_name = "2200"]
| ^^^^^^^^^^^^^^^^^^^^^^^
LL |
LL | / mod export_name {
LL | |
LL | |
LL | | mod inner { #![export_name="2200"] }
... |
LL | |
LL | | }
| |_- not a function or static
error: attribute should be applied to a foreign function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:115:1
|
LL | #[link_name = "1900"]
| ^^^^^^^^^^^^^^^^^^^^^
LL |
LL | / mod link_name {
LL | |
LL | |
LL | | #[link_name = "1900"]
... |
LL | |
LL | | }
| |_- not a foreign function or static
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:147:1
|
LL | #[link_section = "1800"]
| ^^^^^^^^^^^^^^^^^^^^^^^^
LL |
LL | / mod link_section {
LL | |
LL | |
LL | | mod inner { #![link_section="1800"] }
... |
LL | |
LL | | }
| |_- not a function or static
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:18:17
|
LL | mod inner { #![inline] }
| ------------^^^^^^^^^^-- not a function or closure
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:28:5
|
LL | #[inline] struct S;
| ^^^^^^^^^ --------- not a function or closure
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:32:5
|
LL | #[inline] type T = S;
| ^^^^^^^^^ ----------- not a function or closure
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:36:5
|
LL | #[inline] impl S { }
| ^^^^^^^^^ ---------- not a function or closure
error: attribute should be applied to an `extern crate` item
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:46:17
|
LL | mod inner { #![no_link] }
| ------------^^^^^^^^^^^-- not an `extern crate` item
error: attribute should be applied to an `extern crate` item
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:50:5
|
LL | #[no_link] fn f() { }
| ^^^^^^^^^^ ---------- not an `extern crate` item
error: attribute should be applied to an `extern crate` item
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:54:5
|
LL | #[no_link] struct S;
| ^^^^^^^^^^ --------- not an `extern crate` item
error: attribute should be applied to an `extern crate` item
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:58:5
|
LL | #[no_link]type T = S;
| ^^^^^^^^^^----------- not an `extern crate` item
error: attribute should be applied to an `extern crate` item
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:62:5
|
LL | #[no_link] impl S { }
| ^^^^^^^^^^ ---------- not an `extern crate` item
error: attribute should be applied to a function
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:72:17
|
LL | mod inner { #![cold] }
| ------------^^^^^^^^-- not a function
error: attribute should be applied to a function
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:78:5
|
LL | #[cold] struct S;
| ^^^^^^^ --------- not a function
error: attribute should be applied to a function
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:82:5
|
LL | #[cold] type T = S;
| ^^^^^^^ ----------- not a function
error: attribute should be applied to a function
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:86:5
|
LL | #[cold] impl S { }
| ^^^^^^^ ---------- not a function
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:96:17
|
LL | mod inner { #![export_name="2200"] }
| ------------^^^^^^^^^^^^^^^^^^^^^^-- not a function or static
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:102:5
|
LL | #[export_name = "2200"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^ --------- not a function or static
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:106:5
|
LL | #[export_name = "2200"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^ ----------- not a function or static
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:110:5
|
LL | #[export_name = "2200"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^ ---------- not a function or static
error: attribute should be applied to a foreign function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:120:5
|
LL | #[link_name = "1900"]
| ^^^^^^^^^^^^^^^^^^^^^
...
LL | extern { }
| ---------- not a foreign function or static
|
help: try `#[link(name = "1900")]` instead
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:120:5
|
LL | #[link_name = "1900"]
| ^^^^^^^^^^^^^^^^^^^^^
error: attribute should be applied to a foreign function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:126:17
|
LL | mod inner { #![link_name="1900"] }
| ------------^^^^^^^^^^^^^^^^^^^^-- not a foreign function or static
error: attribute should be applied to a foreign function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:130:5
|
LL | #[link_name = "1900"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^ ---------- not a foreign function or static
error: attribute should be applied to a foreign function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:134:5
|
LL | #[link_name = "1900"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^ --------- not a foreign function or static
error: attribute should be applied to a foreign function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:138:5
|
LL | #[link_name = "1900"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^ ----------- not a foreign function or static
error: attribute should be applied to a foreign function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:142:5
|
LL | #[link_name = "1900"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^ ---------- not a foreign function or static
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:152:17
|
LL | mod inner { #![link_section="1800"] }
| ------------^^^^^^^^^^^^^^^^^^^^^^^-- not a function or static
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:158:5
|
LL | #[link_section = "1800"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^ --------- not a function or static
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:162:5
|
LL | #[link_section = "1800"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^ ----------- not a function or static
error: attribute should be applied to a function or static
--> $DIR/issue-43106-gating-of-builtin-attrs-error.rs:166:5
|
LL | #[link_section = "1800"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^ ---------- not a function or static
error: aborting due to 34 previous errors
For more information about this error, try `rustc --explain E0518`.

View File

@ -72,7 +72,7 @@
#![doc = "2400"]
#![cold]
#![export_name = "2200"]
// see issue-43106-gating-of-inline.rs
// see issue-43106-gating-of-builtin-attrs-error.rs
#![link()]
#![link_name = "1900"]
#![link_section = "1800"]
@ -367,25 +367,6 @@ mod no_mangle {
#[no_mangle] impl S { }
}
#[no_link]
//~^ WARN unused attribute
mod no_link {
mod inner { #![no_link] }
//~^ WARN unused attribute
#[no_link] fn f() { }
//~^ WARN unused attribute
#[no_link] struct S;
//~^ WARN unused attribute
#[no_link]type T = S;
//~^ WARN unused attribute
#[no_link] impl S { }
//~^ WARN unused attribute
}
#[should_panic]
//~^ WARN unused attribute
mod should_panic {
@ -524,32 +505,6 @@ mod doc {
#[doc = "2400"] impl S { }
}
#[cold]
mod cold {
mod inner { #![cold] }
#[cold] fn f() { }
#[cold] struct S;
#[cold] type T = S;
#[cold] impl S { }
}
#[export_name = "2200"]
mod export_name {
mod inner { #![export_name="2200"] }
#[export_name = "2200"] fn f() { }
#[export_name = "2200"] struct S;
#[export_name = "2200"] type T = S;
#[export_name = "2200"] impl S { }
}
// Note that this is a `check-pass` test, so it
// will never invoke the linker. These are here nonetheless to point
// out that we allow them at non-crate-level (though I do not know
@ -568,32 +523,6 @@ mod link {
#[link()] impl S { }
}
#[link_name = "1900"]
mod link_name {
mod inner { #![link_name="1900"] }
#[link_name = "1900"] fn f() { }
#[link_name = "1900"] struct S;
#[link_name = "1900"] type T = S;
#[link_name = "1900"] impl S { }
}
#[link_section = "1800"]
mod link_section {
mod inner { #![link_section="1800"] }
#[link_section = "1800"] fn f() { }
#[link_section = "1800"] struct S;
#[link_section = "1800"] type T = S;
#[link_section = "1800"] impl S { }
}
struct StructForDeprecated;
#[deprecated]

View File

@ -173,13 +173,13 @@ LL | #[deny(x5100)] impl S { }
| ^^^^^
warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:466:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:447:1
|
LL | #[macro_escape]
| ^^^^^^^^^^^^^^^
warning: `#[macro_escape]` is a deprecated synonym for `#[macro_use]`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:469:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:450:17
|
LL | mod inner { #![macro_escape] }
| ^^^^^^^^^^^^^^^^
@ -463,707 +463,671 @@ LL | #[automatically_derived]
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:373:17
|
LL | mod inner { #![no_link] }
| ^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:376:5
|
LL | #[no_link] fn f() { }
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:379:5
|
LL | #[no_link] struct S;
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:382:5
|
LL | #[no_link]type T = S;
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:385:5
|
LL | #[no_link] impl S { }
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:370:1
|
LL | #[no_link]
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:392:17
|
LL | mod inner { #![should_panic] }
| ^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:395:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:376:5
|
LL | #[should_panic] fn f() { }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:398:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:379:5
|
LL | #[should_panic] struct S;
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:401:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:382:5
|
LL | #[should_panic] type T = S;
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:404:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:385:5
|
LL | #[should_panic] impl S { }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:389:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:370:1
|
LL | #[should_panic]
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:411:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:392:17
|
LL | mod inner { #![ignore] }
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:414:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:395:5
|
LL | #[ignore] fn f() { }
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:417:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:398:5
|
LL | #[ignore] struct S;
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:420:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:401:5
|
LL | #[ignore] type T = S;
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:423:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:404:5
|
LL | #[ignore] impl S { }
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:408:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:389:1
|
LL | #[ignore]
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:430:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:411:17
|
LL | mod inner { #![no_implicit_prelude] }
| ^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:433:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:414:5
|
LL | #[no_implicit_prelude] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:436:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:417:5
|
LL | #[no_implicit_prelude] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:439:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:420:5
|
LL | #[no_implicit_prelude] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:442:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:423:5
|
LL | #[no_implicit_prelude] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:427:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:408:1
|
LL | #[no_implicit_prelude]
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:449:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:430:17
|
LL | mod inner { #![reexport_test_harness_main="2900"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:452:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:433:5
|
LL | #[reexport_test_harness_main = "2900"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:455:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:436:5
|
LL | #[reexport_test_harness_main = "2900"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:458:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:439:5
|
LL | #[reexport_test_harness_main = "2900"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:461:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:442:5
|
LL | #[reexport_test_harness_main = "2900"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:446:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:427:1
|
LL | #[reexport_test_harness_main = "2900"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:472:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:453:5
|
LL | #[macro_escape] fn f() { }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:475:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:456:5
|
LL | #[macro_escape] struct S;
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:478:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:459:5
|
LL | #[macro_escape] type T = S;
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:481:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:462:5
|
LL | #[macro_escape] impl S { }
| ^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:489:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:470:17
|
LL | mod inner { #![no_std] }
| ^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:489:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:470:17
|
LL | mod inner { #![no_std] }
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:493:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:474: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:493:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:474:5
|
LL | #[no_std] fn f() { }
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:497:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:478: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:497:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:478:5
|
LL | #[no_std] struct S;
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:501:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:482: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:501:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:482:5
|
LL | #[no_std] type T = S;
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:505:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:486:5
|
LL | #[no_std] impl S { }
| ^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:505:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:486:5
|
LL | #[no_std] impl S { }
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:485:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:466:1
|
LL | #[no_std]
| ^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:485:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:466:1
|
LL | #[no_std]
| ^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:644:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:573: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:644:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:573:17
|
LL | mod inner { #![crate_name="0900"] }
| ^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:648:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:577: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:648:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:577:5
|
LL | #[crate_name = "0900"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:652:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:581: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:652:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:581:5
|
LL | #[crate_name = "0900"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:656:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:585: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:656:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:585:5
|
LL | #[crate_name = "0900"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:660:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:589: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:660:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:589:5
|
LL | #[crate_name = "0900"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:640:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:569: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:640:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:569:1
|
LL | #[crate_name = "0900"]
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:669:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:598: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:669:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:598:17
|
LL | mod inner { #![crate_type="0800"] }
| ^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:673:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:602: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:673:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:602:5
|
LL | #[crate_type = "0800"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:677:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:606: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:677:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:606:5
|
LL | #[crate_type = "0800"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:681:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:610: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:681:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:610:5
|
LL | #[crate_type = "0800"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:685:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:614: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:685:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:614:5
|
LL | #[crate_type = "0800"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:665:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:594: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:665:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:594:1
|
LL | #[crate_type = "0800"]
| ^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:694:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:623:17
|
LL | mod inner { #![feature(x0600)] }
| ^^^^^^^^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:694:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:623:17
|
LL | mod inner { #![feature(x0600)] }
| ^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:698:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:627: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:698:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:627:5
|
LL | #[feature(x0600)] fn f() { }
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:702:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:631: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:702:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:631:5
|
LL | #[feature(x0600)] struct S;
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:706:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:635: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:706:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:635:5
|
LL | #[feature(x0600)] type T = S;
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:710:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:639: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:710:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:639:5
|
LL | #[feature(x0600)] impl S { }
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:690:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:619: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:690:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:619:1
|
LL | #[feature(x0600)]
| ^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:720:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:649:17
|
LL | mod inner { #![no_main] }
| ^^^^^^^^^^^
warning: crate-level attribute should be in the root module
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:720:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:649:17
|
LL | mod inner { #![no_main] }
| ^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:724:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:653: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:724:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:653:5
|
LL | #[no_main] fn f() { }
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:728:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:657: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:728:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:657:5
|
LL | #[no_main] struct S;
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:732:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:661: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:732:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:661:5
|
LL | #[no_main] type T = S;
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:736:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:665:5
|
LL | #[no_main] impl S { }
| ^^^^^^^^^^
warning: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:736:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:665:5
|
LL | #[no_main] impl S { }
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:716:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:645: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:716:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:645:1
|
LL | #[no_main]
| ^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:758:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:687: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:758:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:687:17
|
LL | mod inner { #![recursion_limit="0200"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:762:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:691: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:762:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:691:5
|
LL | #[recursion_limit="0200"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:766:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:695: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:766:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:695:5
|
LL | #[recursion_limit="0200"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:770:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:699: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:770:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:699:5
|
LL | #[recursion_limit="0200"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:774:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:703: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:774:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:703:5
|
LL | #[recursion_limit="0200"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:754:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:683: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:754:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:683:1
|
LL | #[recursion_limit="0200"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:783:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:712: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:783:17
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:712:17
|
LL | mod inner { #![type_length_limit="0100"] }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:787:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:716: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:787:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:716:5
|
LL | #[type_length_limit="0100"] fn f() { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:791:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:720: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:791:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:720:5
|
LL | #[type_length_limit="0100"] struct S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:795:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:724: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:795:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:724:5
|
LL | #[type_length_limit="0100"] type T = S;
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:799:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:728: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:799:5
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:728:5
|
LL | #[type_length_limit="0100"] impl S { }
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
warning: unused attribute
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:779:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:708: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:779:1
--> $DIR/issue-43106-gating-of-builtin-attrs.rs:708:1
|
LL | #[type_length_limit="0100"]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^
@ -1234,5 +1198,5 @@ warning: unused attribute
LL | #![proc_macro_derive()]
| ^^^^^^^^^^^^^^^^^^^^^^^
warning: 203 warnings emitted
warning: 197 warnings emitted

View File

@ -1,31 +0,0 @@
// This is testing whether `#[inline]` signals an error or warning
// when put in "weird" places.
//
// (This file sits on its own because it actually signals an error,
// which would mess up the treatment of other cases in
// issue-43106-gating-of-builtin-attrs.rs)
// Crate-level is accepted, though it is almost certainly unused?
#![inline]
#[inline]
//~^ ERROR attribute should be applied to function or closure
mod inline {
mod inner { #![inline] }
//~^ ERROR attribute should be applied to function or closure
#[inline = "2100"] fn f() { }
//~^ ERROR attribute must be of the form
//~| WARN this was previously accepted
#[inline] struct S;
//~^ ERROR attribute should be applied to function or closure
#[inline] type T = S;
//~^ ERROR attribute should be applied to function or closure
#[inline] impl S { }
//~^ ERROR attribute should be applied to function or closure
}
fn main() {}

View File

@ -1,52 +0,0 @@
error: attribute must be of the form `#[inline]` or `#[inline(always|never)]`
--> $DIR/issue-43106-gating-of-inline.rs:17:5
|
LL | #[inline = "2100"] fn f() { }
| ^^^^^^^^^^^^^^^^^^
|
= note: `#[deny(ill_formed_attribute_input)]` on by default
= warning: this was previously accepted by the compiler but is being phased out; it will become a hard error in a future release!
= note: for more information, see issue #57571 <https://github.com/rust-lang/rust/issues/57571>
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-inline.rs:11:1
|
LL | #[inline]
| ^^^^^^^^^
LL |
LL | / mod inline {
LL | | mod inner { #![inline] }
LL | |
LL | |
... |
LL | |
LL | | }
| |_- not a function or closure
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-inline.rs:14:17
|
LL | mod inner { #![inline] }
| ------------^^^^^^^^^^-- not a function or closure
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-inline.rs:21:5
|
LL | #[inline] struct S;
| ^^^^^^^^^ --------- not a function or closure
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-inline.rs:24:5
|
LL | #[inline] type T = S;
| ^^^^^^^^^ ----------- not a function or closure
error[E0518]: attribute should be applied to function or closure
--> $DIR/issue-43106-gating-of-inline.rs:27:5
|
LL | #[inline] impl S { }
| ^^^^^^^^^ ---------- not a function or closure
error: aborting due to 6 previous errors
For more information about this error, try `rustc --explain E0518`.

View File

@ -23,7 +23,7 @@ fn lgamma(n: c_double, value: &mut isize) -> c_double {
mod m {
use libc::{c_double, c_int};
#[link_name = "m"]
#[link(name = "m")]
extern {
#[cfg(any(all(unix, not(target_os = "vxworks")), target_os = "cloudabi"))]
#[link_name="lgamma_r"]

View File

@ -0,0 +1,22 @@
#[link_name = "foo"] //~ ERROR attribute should be applied to a foreign function or static
struct Foo; //~ NOTE not a foreign function or static
#[link_name = "foobar"]
//~^ ERROR attribute should be applied to a foreign function or static
//~| HELP try `#[link(name = "foobar")]` instead
extern "C" {
fn foo() -> u32;
}
//~^^^ NOTE not a foreign function or static
#[link_name]
//~^ ERROR malformed `link_name` attribute input
//~| HELP must be of the form
//~| ERROR attribute should be applied to a foreign function or static
//~| HELP try `#[link(name = "...")]` instead
extern "C" {
fn bar() -> u32;
}
//~^^^ NOTE not a foreign function or static
fn main() {}

View File

@ -0,0 +1,50 @@
error: malformed `link_name` attribute input
--> $DIR/issue-47725.rs:12:1
|
LL | #[link_name]
| ^^^^^^^^^^^^ help: must be of the form: `#[link_name = "name"]`
error: attribute should be applied to a foreign function or static
--> $DIR/issue-47725.rs:1:1
|
LL | #[link_name = "foo"]
| ^^^^^^^^^^^^^^^^^^^^
LL | struct Foo;
| ----------- not a foreign function or static
error: attribute should be applied to a foreign function or static
--> $DIR/issue-47725.rs:4:1
|
LL | #[link_name = "foobar"]
| ^^^^^^^^^^^^^^^^^^^^^^^
...
LL | / extern "C" {
LL | | fn foo() -> u32;
LL | | }
| |_- not a foreign function or static
|
help: try `#[link(name = "foobar")]` instead
--> $DIR/issue-47725.rs:4:1
|
LL | #[link_name = "foobar"]
| ^^^^^^^^^^^^^^^^^^^^^^^
error: attribute should be applied to a foreign function or static
--> $DIR/issue-47725.rs:12:1
|
LL | #[link_name]
| ^^^^^^^^^^^^
...
LL | / extern "C" {
LL | | fn bar() -> u32;
LL | | }
| |_- not a foreign function or static
|
help: try `#[link(name = "...")]` instead
--> $DIR/issue-47725.rs:12:1
|
LL | #[link_name]
| ^^^^^^^^^^^^
error: aborting due to 4 previous errors

View File

@ -0,0 +1,7 @@
#[cold] //~ ERROR attribute should be applied to a function
struct Foo; //~ NOTE not a function
fn main() {
#[cold] //~ ERROR attribute should be applied to a function
5; //~ NOTE not a function
}

View File

@ -0,0 +1,18 @@
error: attribute should be applied to a function
--> $DIR/issue-54044.rs:1:1
|
LL | #[cold]
| ^^^^^^^
LL | struct Foo;
| ----------- not a function
error: attribute should be applied to a function
--> $DIR/issue-54044.rs:5:5
|
LL | #[cold]
| ^^^^^^^
LL | 5;
| - not a function
error: aborting due to 2 previous errors

View File

@ -2,10 +2,11 @@ fn main() {
(0..)
.map(
#[target_feature(enable = "")]
//~^ ERROR: the feature named `` is not valid for this target
//~| ERROR: `#[target_feature(..)]` can only be applied to `unsafe` functions
//~^ ERROR: attribute should be applied to a function
//~| ERROR: the feature named `` is not valid for this target
#[track_caller]
//~^ ERROR: `#[track_caller]` requires Rust ABI
//~^ ERROR: attribute should be applied to function [E0739]
//~| ERROR: `#[track_caller]` requires Rust ABI [E0737]
|_| (),
)
.next();

View File

@ -1,14 +1,20 @@
error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions
error: attribute should be applied to a function
--> $DIR/issue-68060.rs:4:13
|
LL | #[target_feature(enable = "")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
LL | |_| (),
| ------ not an `unsafe` function
| ------ not a function
error[E0739]: attribute should be applied to function
--> $DIR/issue-68060.rs:7:13
|
= note: see issue #69098 <https://github.com/rust-lang/rust/issues/69098> for more information
= help: add `#![feature(target_feature_11)]` to the crate attributes to enable
LL | #[track_caller]
| ^^^^^^^^^^^^^^^
...
LL | |_| (),
| ------ not a function
error: the feature named `` is not valid for this target
--> $DIR/issue-68060.rs:4:30
@ -17,12 +23,12 @@ LL | #[target_feature(enable = "")]
| ^^^^^^^^^^^ `` is not valid for this target
error[E0737]: `#[track_caller]` requires Rust ABI
--> $DIR/issue-68060.rs:7:13
--> $DIR/issue-68060.rs:8:13
|
LL | #[track_caller]
| ^^^^^^^^^^^^^^^
error: aborting due to 3 previous errors
error: aborting due to 4 previous errors
Some errors have detailed explanations: E0658, E0737.
For more information about an error, try `rustc --explain E0658`.
Some errors have detailed explanations: E0737, E0739.
For more information about an error, try `rustc --explain E0737`.

View File

@ -79,13 +79,16 @@ impl Quux for Foo {
}
fn main() {
#[target_feature(enable = "sse2")]
//~^ ERROR attribute should be applied to a function
unsafe {
foo();
bar();
}
//~^^^^ NOTE not a function
#[target_feature(enable = "sse2")]
//~^ ERROR `#[target_feature(..)]` can only be applied to `unsafe` functions
//~| NOTE see issue #69098
//~^ ERROR attribute should be applied to a function
|| {};
//~^ NOTE not an `unsafe` function
//~^ NOTE not a function
}

View File

@ -94,17 +94,26 @@ error: cannot use `#[inline(always)]` with `#[target_feature]`
LL | #[inline(always)]
| ^^^^^^^^^^^^^^^^^
error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions
--> $DIR/invalid-attribute.rs:86:5
error: attribute should be applied to a function
--> $DIR/invalid-attribute.rs:82:5
|
LL | #[target_feature(enable = "sse2")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
LL |
LL | / unsafe {
LL | | foo();
LL | | bar();
LL | | }
| |_____- not a function
error: attribute should be applied to a function
--> $DIR/invalid-attribute.rs:90:5
|
LL | #[target_feature(enable = "sse2")]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
LL |
LL | || {};
| ----- not an `unsafe` function
|
= note: see issue #69098 <https://github.com/rust-lang/rust/issues/69098> for more information
= help: add `#![feature(target_feature_11)]` to the crate attributes to enable
| ----- not a function
error[E0658]: `#[target_feature(..)]` can only be applied to `unsafe` functions
--> $DIR/invalid-attribute.rs:74:5
@ -118,6 +127,6 @@ LL | fn foo() {}
= note: see issue #69098 <https://github.com/rust-lang/rust/issues/69098> for more information
= help: add `#![feature(target_feature_11)]` to the crate attributes to enable
error: aborting due to 14 previous errors
error: aborting due to 15 previous errors
For more information about this error, try `rustc --explain E0658`.