mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-11-10 23:24:24 +00:00
Auto merge of #4107 - taiki-e:useless_attribute, r=flip1995
useless_attribute: Add unreachable_pub to whitelists Fixes #4106 changelog: `useless_attribute`: whitelist `unreachable_pub` on `use` items
This commit is contained in:
commit
0417a0ac4d
3 changed files with 20 additions and 6 deletions
|
@ -49,9 +49,9 @@ declare_clippy_lint! {
|
|||
/// **What it does:** Checks for `extern crate` and `use` items annotated with
|
||||
/// lint attributes.
|
||||
///
|
||||
/// This lint whitelists `#[allow(unused_imports)]` and `#[allow(deprecated)]` on
|
||||
/// `use` items and `#[allow(unused_imports)]` on `extern crate` items with a
|
||||
/// `#[macro_use]` attribute.
|
||||
/// This lint whitelists `#[allow(unused_imports)]`, `#[allow(deprecated)]` and
|
||||
/// `#[allow(unreachable_pub)]` on `use` items and `#[allow(unused_imports)]` on
|
||||
/// `extern crate` items with a `#[macro_use]` attribute.
|
||||
///
|
||||
/// **Why is this bad?** Lint attributes have no effect on crate imports. Most
|
||||
/// likely a `!` was forgotten.
|
||||
|
@ -239,13 +239,14 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for Attributes {
|
|||
if let Some(ident) = attr.ident() {
|
||||
match &*ident.as_str() {
|
||||
"allow" | "warn" | "deny" | "forbid" => {
|
||||
// whitelist `unused_imports` and `deprecated` for `use` items
|
||||
// whitelist `unused_imports`, `deprecated` and `unreachable_pub` for `use` items
|
||||
// and `unused_imports` for `extern crate` items with `macro_use`
|
||||
for lint in lint_list {
|
||||
match item.node {
|
||||
ItemKind::Use(..) => {
|
||||
if is_word(lint, sym!(unused_imports))
|
||||
|| is_word(lint, sym!(deprecated))
|
||||
|| is_word(lint, sym!(unreachable_pub))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
// aux-build:proc_macro_derive.rs
|
||||
|
||||
#![warn(clippy::useless_attribute)]
|
||||
#![warn(unreachable_pub)]
|
||||
|
||||
#[allow(dead_code)]
|
||||
#[cfg_attr(feature = "cargo-clippy", allow(dead_code))]
|
||||
|
@ -32,4 +33,16 @@ pub use foo::Bar;
|
|||
#[derive(DeriveSomething)]
|
||||
struct Baz;
|
||||
|
||||
// don't lint on unreachable_pub for `use` items
|
||||
mod a {
|
||||
mod b {
|
||||
#[allow(dead_code)]
|
||||
#[allow(unreachable_pub)]
|
||||
pub struct C {}
|
||||
}
|
||||
|
||||
#[allow(unreachable_pub)]
|
||||
pub use self::b::C;
|
||||
}
|
||||
|
||||
fn main() {}
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
error: useless lint attribute
|
||||
--> $DIR/useless_attribute.rs:5:1
|
||||
--> $DIR/useless_attribute.rs:6:1
|
||||
|
|
||||
LL | #[allow(dead_code)]
|
||||
| ^^^^^^^^^^^^^^^^^^^ help: if you just forgot a `!`, use: `#![allow(dead_code)]`
|
||||
|
@ -7,7 +7,7 @@ LL | #[allow(dead_code)]
|
|||
= note: `-D clippy::useless-attribute` implied by `-D warnings`
|
||||
|
||||
error: useless lint attribute
|
||||
--> $DIR/useless_attribute.rs:6:1
|
||||
--> $DIR/useless_attribute.rs:7:1
|
||||
|
|
||||
LL | #[cfg_attr(feature = "cargo-clippy", allow(dead_code))]
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: if you just forgot a `!`, use: `#![cfg_attr(feature = "cargo-clippy", allow(dead_code)`
|
||||
|
|
Loading…
Reference in a new issue