Rollup merge of #123744 - compiler-errors:redundant-due-to-glob, r=petrochenkov
Silence `unused_imports` for redundant imports Quick fix for https://github.com/rust-lang/rust/issues/121708#issuecomment-2048105393 r? `@petrochenkov` cc `@joshtriplett` I think this is right, would like confirmation. I also think it's weird that we're using `=` to assign to `is_redundant` but using `per_ns` for the actual spans. Seems like this could be weirdly order dependent, but that's unrelated to this change.
This commit is contained in:
commit
da75aaf13d
@ -1391,6 +1391,7 @@ pub(crate) fn check_for_redundant_imports(&mut self, import: Import<'a>) -> bool
|
||||
let mut redundant_spans: Vec<_> = redundant_span.present_items().collect();
|
||||
redundant_spans.sort();
|
||||
redundant_spans.dedup();
|
||||
/* FIXME(unused_imports): Add this back as a new lint
|
||||
self.lint_buffer.buffer_lint_with_diagnostic(
|
||||
UNUSED_IMPORTS,
|
||||
id,
|
||||
@ -1398,6 +1399,7 @@ pub(crate) fn check_for_redundant_imports(&mut self, import: Import<'a>) -> bool
|
||||
format!("the item `{source}` is imported redundantly"),
|
||||
BuiltinLintDiag::RedundantImport(redundant_spans, source),
|
||||
);
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
|
||||
|
@ -177,7 +177,7 @@ enum ImplTraitContext {
|
||||
|
||||
/// Used for tracking import use types which will be used for redundant import checking.
|
||||
/// ### Used::Scope Example
|
||||
/// ```rust,compile_fail
|
||||
/// ```rust,ignore (redundant_imports)
|
||||
/// #![deny(unused_imports)]
|
||||
/// use std::mem::drop;
|
||||
/// fn main() {
|
||||
|
@ -1,7 +1,7 @@
|
||||
//@ check-pass
|
||||
// Check that we detect imports that are redundant due to the extern prelude
|
||||
// and that we emit a reasonable diagnostic.
|
||||
// issue: rust-lang/rust#121915
|
||||
//~^^^ NOTE the item `aux_issue_121915` is already defined by the extern prelude
|
||||
|
||||
// See also the discussion in <https://github.com/rust-lang/rust/pull/122954>.
|
||||
|
||||
@ -9,9 +9,8 @@
|
||||
//@ aux-build: aux-issue-121915.rs
|
||||
|
||||
#[deny(unused_imports)]
|
||||
//~^ NOTE the lint level is defined here
|
||||
fn main() {
|
||||
use aux_issue_121915;
|
||||
//~^ ERROR the item `aux_issue_121915` is imported redundantly
|
||||
//FIXME(unused_imports): ~^ ERROR the item `aux_issue_121915` is imported redundantly
|
||||
aux_issue_121915::item();
|
||||
}
|
||||
|
@ -1,14 +0,0 @@
|
||||
error: the item `aux_issue_121915` is imported redundantly
|
||||
--> $DIR/redundant-import-extern-prelude.rs:14:9
|
||||
|
|
||||
LL | use aux_issue_121915;
|
||||
| ^^^^^^^^^^^^^^^^ the item `aux_issue_121915` is already defined by the extern prelude
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/redundant-import-extern-prelude.rs:11:8
|
||||
|
|
||||
LL | #[deny(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
@ -1,3 +1,4 @@
|
||||
//@ check-pass
|
||||
//@ compile-flags: --extern aux_issue_121915 --edition 2015
|
||||
//@ aux-build: aux-issue-121915.rs
|
||||
|
||||
@ -6,6 +7,6 @@
|
||||
#[deny(unused_imports)]
|
||||
fn main() {
|
||||
use aux_issue_121915;
|
||||
//~^ ERROR the item `aux_issue_121915` is imported redundantly
|
||||
//FIXME(unused_imports): ~^ ERROR the item `aux_issue_121915` is imported redundantly
|
||||
aux_issue_121915::item();
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
error: the item `aux_issue_121915` is imported redundantly
|
||||
--> $DIR/redundant-import-issue-121915-2015.rs:8:9
|
||||
|
|
||||
LL | extern crate aux_issue_121915;
|
||||
| ------------------------------ the item `aux_issue_121915` is already imported here
|
||||
...
|
||||
LL | use aux_issue_121915;
|
||||
| ^^^^^^^^^^^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/redundant-import-issue-121915-2015.rs:6:8
|
||||
|
|
||||
LL | #[deny(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
@ -1,6 +1,6 @@
|
||||
//@ check-pass
|
||||
// Check that we detect imports (of built-in attributes) that are redundant due to
|
||||
// the language prelude and that we emit a reasonable diagnostic.
|
||||
//~^^ NOTE the item `allow` is already defined by the extern prelude
|
||||
|
||||
// Note that we use the term "extern prelude" in the label even though "language prelude"
|
||||
// would be more correct. However, it's not worth special-casing this.
|
||||
@ -10,9 +10,8 @@
|
||||
//@ edition: 2018
|
||||
|
||||
#![deny(unused_imports)]
|
||||
//~^ NOTE the lint level is defined here
|
||||
|
||||
use allow; //~ ERROR the item `allow` is imported redundantly
|
||||
use allow; //FIXME(unused_imports): ~ ERROR the item `allow` is imported redundantly
|
||||
|
||||
#[allow(unused)]
|
||||
fn main() {}
|
||||
|
@ -1,14 +0,0 @@
|
||||
error: the item `allow` is imported redundantly
|
||||
--> $DIR/redundant-import-lang-prelude-attr.rs:15:5
|
||||
|
|
||||
LL | use allow;
|
||||
| ^^^^^ the item `allow` is already defined by the extern prelude
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/redundant-import-lang-prelude-attr.rs:12:9
|
||||
|
|
||||
LL | #![deny(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
@ -1,6 +1,6 @@
|
||||
//@ check-pass
|
||||
// Check that we detect imports that are redundant due to the language prelude
|
||||
// and that we emit a reasonable diagnostic.
|
||||
//~^^ NOTE the item `u8` is already defined by the extern prelude
|
||||
|
||||
// Note that we use the term "extern prelude" in the label even though "language prelude"
|
||||
// would be more correct. However, it's not worth special-casing this.
|
||||
@ -8,10 +8,9 @@
|
||||
// See also the discussion in <https://github.com/rust-lang/rust/pull/122954>.
|
||||
|
||||
#![deny(unused_imports)]
|
||||
//~^ NOTE the lint level is defined here
|
||||
|
||||
use std::primitive::u8;
|
||||
//~^ ERROR the item `u8` is imported redundantly
|
||||
//FIXME(unused_imports): ~^ ERROR the item `u8` is imported redundantly
|
||||
|
||||
const _: u8 = 0;
|
||||
|
||||
|
@ -1,14 +0,0 @@
|
||||
error: the item `u8` is imported redundantly
|
||||
--> $DIR/redundant-import-lang-prelude.rs:13:5
|
||||
|
|
||||
LL | use std::primitive::u8;
|
||||
| ^^^^^^^^^^^^^^^^^^ the item `u8` is already defined by the extern prelude
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/redundant-import-lang-prelude.rs:10:9
|
||||
|
|
||||
LL | #![deny(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
@ -1,19 +1,20 @@
|
||||
//@ compile-flags: --edition 2021
|
||||
|
||||
#![deny(unused_imports)]
|
||||
#![allow(dead_code)]
|
||||
|
||||
fn test0() {
|
||||
// Test remove FlatUnused
|
||||
use std::convert::TryFrom;
|
||||
//~^ ERROR the item `TryFrom` is imported redundantly
|
||||
//FIXME(unused_imports): ~^ ERROR the item `TryFrom` is imported redundantly
|
||||
let _ = u32::try_from(5i32);
|
||||
}
|
||||
|
||||
fn test1() {
|
||||
// FIXME(yukang) Test remove NestedFullUnused
|
||||
use std::convert::{TryFrom, TryInto};
|
||||
//~^ ERROR the item `TryFrom` is imported redundantly
|
||||
//~| ERROR the item `TryInto` is imported redundantly
|
||||
//FIXME(unused_imports): ~^ ERROR the item `TryFrom` is imported redundantly
|
||||
//FIXME(unused_imports): ~| ERROR the item `TryInto` is imported redundantly
|
||||
|
||||
let _ = u32::try_from(5i32);
|
||||
let _a: i32 = u32::try_into(5u32).unwrap();
|
||||
@ -23,7 +24,7 @@ fn test2() {
|
||||
// FIXME(yukang): Test remove both redundant and unused
|
||||
use std::convert::{AsMut, Into};
|
||||
//~^ ERROR unused import: `AsMut`
|
||||
//~| ERROR the item `Into` is imported redundantly
|
||||
//FIXME(unused_imports): ~| ERROR the item `Into` is imported redundantly
|
||||
|
||||
let _a: u32 = (5u8).into();
|
||||
}
|
||||
|
@ -1,56 +1,20 @@
|
||||
error: the item `TryFrom` is imported redundantly
|
||||
--> $DIR/suggest-remove-issue-121315.rs:7:9
|
||||
error: unused import: `AsMut`
|
||||
--> $DIR/suggest-remove-issue-121315.rs:25:24
|
||||
|
|
||||
LL | use std::convert::TryFrom;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `TryFrom` is already defined here
|
||||
LL | use std::convert::{AsMut, Into};
|
||||
| ^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/suggest-remove-issue-121315.rs:2:9
|
||||
--> $DIR/suggest-remove-issue-121315.rs:3:9
|
||||
|
|
||||
LL | #![deny(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: the item `TryFrom` is imported redundantly
|
||||
--> $DIR/suggest-remove-issue-121315.rs:14:24
|
||||
|
|
||||
LL | use std::convert::{TryFrom, TryInto};
|
||||
| ^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `TryFrom` is already defined here
|
||||
|
||||
error: the item `TryInto` is imported redundantly
|
||||
--> $DIR/suggest-remove-issue-121315.rs:14:33
|
||||
|
|
||||
LL | use std::convert::{TryFrom, TryInto};
|
||||
| ^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `TryInto` is already defined here
|
||||
|
||||
error: unused import: `AsMut`
|
||||
--> $DIR/suggest-remove-issue-121315.rs:24:24
|
||||
|
|
||||
LL | use std::convert::{AsMut, Into};
|
||||
| ^^^^^
|
||||
|
||||
error: the item `Into` is imported redundantly
|
||||
--> $DIR/suggest-remove-issue-121315.rs:24:31
|
||||
|
|
||||
LL | use std::convert::{AsMut, Into};
|
||||
| ^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `Into` is already defined here
|
||||
|
||||
error: unused import: `From`
|
||||
--> $DIR/suggest-remove-issue-121315.rs:33:24
|
||||
--> $DIR/suggest-remove-issue-121315.rs:34:24
|
||||
|
|
||||
LL | use std::convert::{From, Infallible};
|
||||
| ^^^^
|
||||
|
||||
error: aborting due to 6 previous errors
|
||||
error: aborting due to 2 previous errors
|
||||
|
||||
|
@ -1,9 +1,10 @@
|
||||
//@ check-pass
|
||||
#![deny(unused_imports)]
|
||||
|
||||
struct S;
|
||||
|
||||
fn main() {
|
||||
use S; //~ ERROR the item `S` is imported redundantly
|
||||
use S; //FIXME(unused_imports): ~ ERROR the item `S` is imported redundantly
|
||||
|
||||
let _s = S;
|
||||
}
|
||||
|
@ -1,17 +0,0 @@
|
||||
error: the item `S` is imported redundantly
|
||||
--> $DIR/issue-59896.rs:6:9
|
||||
|
|
||||
LL | struct S;
|
||||
| --------- the item `S` is already defined here
|
||||
...
|
||||
LL | use S;
|
||||
| ^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/issue-59896.rs:1:9
|
||||
|
|
||||
LL | #![deny(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
error: aborting due to 1 previous error
|
||||
|
@ -9,7 +9,7 @@ pub mod bar {
|
||||
use bar::*;
|
||||
|
||||
pub fn warning() -> Foo {
|
||||
use bar::Foo; //~ WARNING imported redundantly
|
||||
use bar::Foo; //FIXME(unused_imports): ~ WARNING imported redundantly
|
||||
Foo(Bar('a'))
|
||||
}
|
||||
|
||||
|
@ -1,17 +0,0 @@
|
||||
warning: the item `Foo` is imported redundantly
|
||||
--> $DIR/use-redundant-glob-parent.rs:12:9
|
||||
|
|
||||
LL | use bar::*;
|
||||
| ------ the item `Foo` is already imported here
|
||||
...
|
||||
LL | use bar::Foo;
|
||||
| ^^^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/use-redundant-glob-parent.rs:2:9
|
||||
|
|
||||
LL | #![warn(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
@ -8,7 +8,7 @@ pub mod bar {
|
||||
|
||||
pub fn warning() -> bar::Foo {
|
||||
use bar::*;
|
||||
use bar::Foo; //~ WARNING imported redundantly
|
||||
use bar::Foo; //FIXME(unused_imports): ~ WARNING imported redundantly
|
||||
Foo(Bar('a'))
|
||||
}
|
||||
|
||||
|
@ -1,16 +0,0 @@
|
||||
warning: the item `Foo` is imported redundantly
|
||||
--> $DIR/use-redundant-glob.rs:11:9
|
||||
|
|
||||
LL | use bar::*;
|
||||
| ------ the item `Foo` is already imported here
|
||||
LL | use bar::Foo;
|
||||
| ^^^^^^^^
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/use-redundant-glob.rs:2:9
|
||||
|
|
||||
LL | #![warn(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
@ -23,7 +23,8 @@ fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
|
||||
fn main() {
|
||||
|
||||
{
|
||||
use std::string::String; //~ WARNING the item `String` is imported redundantly
|
||||
use std::string::String;
|
||||
//FIXME(unused_imports): ~^ WARNING the item `String` is imported redundantly
|
||||
// 'String' from 'std::string::String'.
|
||||
let s = String::new();
|
||||
println!("{}", s);
|
||||
|
@ -1,17 +0,0 @@
|
||||
warning: the item `String` is imported redundantly
|
||||
--> $DIR/use-redundant-issue-71450.rs:26:13
|
||||
|
|
||||
LL | use std::string::String;
|
||||
| ^^^^^^^^^^^^^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `String` is already defined here
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/use-redundant-issue-71450.rs:3:9
|
||||
|
|
||||
LL | #![warn(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
warning: 1 warning emitted
|
||||
|
@ -2,11 +2,15 @@
|
||||
#![warn(unused_imports)]
|
||||
|
||||
|
||||
use std::option::Option::Some;//~ WARNING the item `Some` is imported redundantly
|
||||
use std::option::Option::None; //~ WARNING the item `None` is imported redundantly
|
||||
use std::option::Option::Some;
|
||||
//FIXME(unused_imports): ~^ WARNING the item `Some` is imported redundantly
|
||||
use std::option::Option::None;
|
||||
//FIXME(unused_imports): ~ WARNING the item `None` is imported redundantly
|
||||
|
||||
use std::result::Result::Ok;//~ WARNING the item `Ok` is imported redundantly
|
||||
use std::result::Result::Err;//~ WARNING the item `Err` is imported redundantly
|
||||
use std::result::Result::Ok;
|
||||
//FIXME(unused_imports): ~^ WARNING the item `Ok` is imported redundantly
|
||||
use std::result::Result::Err;
|
||||
//FIXME(unused_imports): ~^ WARNING the item `Err` is imported redundantly
|
||||
use std::convert::{TryFrom, TryInto};
|
||||
|
||||
fn main() {
|
||||
|
@ -1,44 +0,0 @@
|
||||
warning: the item `Some` is imported redundantly
|
||||
--> $DIR/use-redundant-prelude-rust-2015.rs:5:5
|
||||
|
|
||||
LL | use std::option::Option::Some;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `Some` is already defined here
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/use-redundant-prelude-rust-2015.rs:2:9
|
||||
|
|
||||
LL | #![warn(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
warning: the item `None` is imported redundantly
|
||||
--> $DIR/use-redundant-prelude-rust-2015.rs:6:5
|
||||
|
|
||||
LL | use std::option::Option::None;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `None` is already defined here
|
||||
|
||||
warning: the item `Ok` is imported redundantly
|
||||
--> $DIR/use-redundant-prelude-rust-2015.rs:8:5
|
||||
|
|
||||
LL | use std::result::Result::Ok;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `Ok` is already defined here
|
||||
|
||||
warning: the item `Err` is imported redundantly
|
||||
--> $DIR/use-redundant-prelude-rust-2015.rs:9:5
|
||||
|
|
||||
LL | use std::result::Result::Err;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `Err` is already defined here
|
||||
|
||||
warning: 4 warnings emitted
|
||||
|
@ -2,8 +2,10 @@
|
||||
//@ edition:2021
|
||||
#![warn(unused_imports)]
|
||||
|
||||
use std::convert::TryFrom;//~ WARNING the item `TryFrom` is imported redundantly
|
||||
use std::convert::TryInto;//~ WARNING the item `TryInto` is imported redundantly
|
||||
use std::convert::TryFrom;
|
||||
//FIXME(unused_imports): ~^ WARNING the item `TryFrom` is imported redundantly
|
||||
use std::convert::TryInto;
|
||||
//FIXME(unused_imports): ~^ WARNING the item `TryInto` is imported redundantly
|
||||
|
||||
fn main() {
|
||||
let _e: Result<i32, _> = 8u8.try_into();
|
||||
|
@ -1,26 +0,0 @@
|
||||
warning: the item `TryFrom` is imported redundantly
|
||||
--> $DIR/use-redundant-prelude-rust-2021.rs:5:5
|
||||
|
|
||||
LL | use std::convert::TryFrom;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `TryFrom` is already defined here
|
||||
|
|
||||
note: the lint level is defined here
|
||||
--> $DIR/use-redundant-prelude-rust-2021.rs:3:9
|
||||
|
|
||||
LL | #![warn(unused_imports)]
|
||||
| ^^^^^^^^^^^^^^
|
||||
|
||||
warning: the item `TryInto` is imported redundantly
|
||||
--> $DIR/use-redundant-prelude-rust-2021.rs:6:5
|
||||
|
|
||||
LL | use std::convert::TryInto;
|
||||
| ^^^^^^^^^^^^^^^^^^^^^
|
||||
--> $SRC_DIR/std/src/prelude/mod.rs:LL:COL
|
||||
|
|
||||
= note: the item `TryInto` is already defined here
|
||||
|
||||
warning: 2 warnings emitted
|
||||
|
@ -18,7 +18,7 @@ mod m2 { pub struct S {} }
|
||||
use m2::*; //~ WARNING unused import
|
||||
|
||||
fn main() {
|
||||
use crate::foo::Bar; //~ WARNING imported redundantly
|
||||
use crate::foo::Bar; //FIXME(unused_imports): ~ WARNING imported redundantly
|
||||
let _a: Bar = 3;
|
||||
baz();
|
||||
|
||||
|
@ -16,14 +16,5 @@ warning: unused import: `m2::*`
|
||||
LL | use m2::*;
|
||||
| ^^^^^
|
||||
|
||||
warning: the item `Bar` is imported redundantly
|
||||
--> $DIR/use-redundant.rs:21:9
|
||||
|
|
||||
LL | use crate::foo::Bar;
|
||||
| --------------- the item `Bar` is already imported here
|
||||
...
|
||||
LL | use crate::foo::Bar;
|
||||
| ^^^^^^^^^^^^^^^
|
||||
|
||||
warning: 3 warnings emitted
|
||||
warning: 2 warnings emitted
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user