Fix unused attributes on macro_rules.
This commit is contained in:
parent
17f30e5451
commit
5bbc240ffb
4 changed files with 70 additions and 3 deletions
|
@ -448,6 +448,10 @@ fn late_lint_pass_crate<'tcx, T: LateLintPass<'tcx>>(tcx: TyCtxt<'tcx>, pass: T)
|
||||||
lint_callback!(cx, check_crate, krate);
|
lint_callback!(cx, check_crate, krate);
|
||||||
|
|
||||||
hir_visit::walk_crate(cx, krate);
|
hir_visit::walk_crate(cx, krate);
|
||||||
|
for attr in krate.non_exported_macro_attrs {
|
||||||
|
// This HIR ID is a lie, since the macro ID isn't available.
|
||||||
|
cx.visit_attribute(hir::CRATE_HIR_ID, attr);
|
||||||
|
}
|
||||||
|
|
||||||
lint_callback!(cx, check_crate_post, krate);
|
lint_callback!(cx, check_crate_post, krate);
|
||||||
})
|
})
|
||||||
|
|
|
@ -6,7 +6,6 @@ use rustc_span::Symbol;
|
||||||
use std::fmt;
|
use std::fmt;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
|
||||||
#[macro_use]
|
|
||||||
macro_rules! def_reg_class {
|
macro_rules! def_reg_class {
|
||||||
($arch:ident $arch_regclass:ident {
|
($arch:ident $arch_regclass:ident {
|
||||||
$(
|
$(
|
||||||
|
@ -51,7 +50,6 @@ macro_rules! def_reg_class {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[macro_use]
|
|
||||||
macro_rules! def_regs {
|
macro_rules! def_regs {
|
||||||
($arch:ident $arch_reg:ident $arch_regclass:ident {
|
($arch:ident $arch_reg:ident $arch_regclass:ident {
|
||||||
$(
|
$(
|
||||||
|
@ -129,7 +127,6 @@ macro_rules! def_regs {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#[macro_use]
|
|
||||||
macro_rules! types {
|
macro_rules! types {
|
||||||
(
|
(
|
||||||
$(_ : $($ty:expr),+;)?
|
$(_ : $($ty:expr),+;)?
|
||||||
|
|
34
src/test/ui/unused/unused-attr-macro-rules.rs
Normal file
34
src/test/ui/unused/unused-attr-macro-rules.rs
Normal file
|
@ -0,0 +1,34 @@
|
||||||
|
#![deny(unused_attributes)]
|
||||||
|
// Unused attributes on macro_rules requires special handling since the
|
||||||
|
// macro_rules definition does not survive towards HIR.
|
||||||
|
|
||||||
|
// A sample of various built-in attributes.
|
||||||
|
#[macro_export]
|
||||||
|
#[macro_use] //~ ERROR unused attribute
|
||||||
|
#[path="foo"] //~ ERROR unused attribute
|
||||||
|
#[recursion_limit="1"] //~ ERROR unused attribute
|
||||||
|
//~| ERROR crate-level attribute should be an inner attribute
|
||||||
|
macro_rules! foo {
|
||||||
|
() => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
// The following should not warn about unused attributes.
|
||||||
|
#[allow(unused)]
|
||||||
|
macro_rules! foo2 {
|
||||||
|
() => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(FALSE)]
|
||||||
|
macro_rules! foo {
|
||||||
|
() => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Some docs
|
||||||
|
#[deprecated]
|
||||||
|
#[doc = "more docs"]
|
||||||
|
#[macro_export]
|
||||||
|
macro_rules! bar {
|
||||||
|
() => {};
|
||||||
|
}
|
||||||
|
|
||||||
|
fn main() {}
|
32
src/test/ui/unused/unused-attr-macro-rules.stderr
Normal file
32
src/test/ui/unused/unused-attr-macro-rules.stderr
Normal file
|
@ -0,0 +1,32 @@
|
||||||
|
error: unused attribute
|
||||||
|
--> $DIR/unused-attr-macro-rules.rs:7:1
|
||||||
|
|
|
||||||
|
LL | #[macro_use]
|
||||||
|
| ^^^^^^^^^^^^
|
||||||
|
|
|
||||||
|
note: the lint level is defined here
|
||||||
|
--> $DIR/unused-attr-macro-rules.rs:1:9
|
||||||
|
|
|
||||||
|
LL | #![deny(unused_attributes)]
|
||||||
|
| ^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: unused attribute
|
||||||
|
--> $DIR/unused-attr-macro-rules.rs:8:1
|
||||||
|
|
|
||||||
|
LL | #[path="foo"]
|
||||||
|
| ^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: unused attribute
|
||||||
|
--> $DIR/unused-attr-macro-rules.rs:9:1
|
||||||
|
|
|
||||||
|
LL | #[recursion_limit="1"]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: crate-level attribute should be an inner attribute: add an exclamation mark: `#![foo]`
|
||||||
|
--> $DIR/unused-attr-macro-rules.rs:9:1
|
||||||
|
|
|
||||||
|
LL | #[recursion_limit="1"]
|
||||||
|
| ^^^^^^^^^^^^^^^^^^^^^^
|
||||||
|
|
||||||
|
error: aborting due to 4 previous errors
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue