Introduce REDUNDANT_IMPORTS lint
This commit is contained in:
@@ -700,10 +700,10 @@ lint_reason_must_be_string_literal = reason must be a string literal
|
||||
lint_reason_must_come_last = reason in lint attribute must come last
|
||||
|
||||
lint_redundant_import = the item `{$ident}` is imported redundantly
|
||||
.label_imported_here = the item `{ident}` is already imported here
|
||||
.label_defined_here = the item `{ident}` is already defined here
|
||||
.label_imported_prelude = the item `{ident}` is already imported by the extern prelude
|
||||
.label_defined_prelude = the item `{ident}` is already defined by the extern prelude
|
||||
.label_imported_here = the item `{$ident}` is already imported here
|
||||
.label_defined_here = the item `{$ident}` is already defined here
|
||||
.label_imported_prelude = the item `{$ident}` is already imported by the extern prelude
|
||||
.label_defined_prelude = the item `{$ident}` is already defined by the extern prelude
|
||||
|
||||
lint_redundant_import_visibility = glob import doesn't reexport anything with visibility `{$import_vis}` because no imported item is public enough
|
||||
.note = the most public imported item is `{$max_vis}`
|
||||
|
||||
@@ -82,6 +82,7 @@ declare_lint_pass! {
|
||||
PROC_MACRO_DERIVE_RESOLUTION_FALLBACK,
|
||||
PTR_CAST_ADD_AUTO_TO_OBJECT,
|
||||
PUB_USE_OF_PRIVATE_EXTERN_CRATE,
|
||||
REDUNDANT_IMPORTS,
|
||||
REDUNDANT_LIFETIMES,
|
||||
REFINING_IMPL_TRAIT_INTERNAL,
|
||||
REFINING_IMPL_TRAIT_REACHABLE,
|
||||
@@ -426,6 +427,31 @@ declare_lint! {
|
||||
"imports that are never used"
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
/// The `redundant_imports` lint detects imports that are redundant due to being
|
||||
/// imported already; either through a previous import, or being present in
|
||||
/// the prelude.
|
||||
///
|
||||
/// ### Example
|
||||
///
|
||||
/// ```rust,compile_fail
|
||||
/// #![deny(redundant_imports)]
|
||||
/// use std::option::Option::None;
|
||||
/// fn foo() -> Option<i32> { None }
|
||||
/// ```
|
||||
///
|
||||
/// {{produces}}
|
||||
///
|
||||
/// ### Explanation
|
||||
///
|
||||
/// Redundant imports are unnecessary and can be removed to simplify code.
|
||||
/// If you intended to re-export the item to make it available outside of the
|
||||
/// module, add a visibility modifier like `pub`.
|
||||
pub REDUNDANT_IMPORTS,
|
||||
Allow,
|
||||
"imports that are redundant due to being imported already"
|
||||
}
|
||||
|
||||
declare_lint! {
|
||||
/// The `must_not_suspend` lint guards against values that shouldn't be held across suspend points
|
||||
/// (`.await`)
|
||||
|
||||
@@ -14,7 +14,7 @@ use rustc_middle::metadata::{ModChild, Reexport};
|
||||
use rustc_middle::{span_bug, ty};
|
||||
use rustc_session::lint::builtin::{
|
||||
AMBIGUOUS_GLOB_REEXPORTS, HIDDEN_GLOB_REEXPORTS, PUB_USE_OF_PRIVATE_EXTERN_CRATE,
|
||||
UNUSED_IMPORTS,
|
||||
REDUNDANT_IMPORTS, UNUSED_IMPORTS,
|
||||
};
|
||||
use rustc_session::lint::BuiltinLintDiag;
|
||||
use rustc_span::edit_distance::find_best_match_for_name;
|
||||
@@ -1387,14 +1387,12 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> {
|
||||
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,
|
||||
self.lint_buffer.buffer_lint(
|
||||
REDUNDANT_IMPORTS,
|
||||
id,
|
||||
import.span,
|
||||
BuiltinLintDiag::RedundantImport(redundant_spans, source),
|
||||
);
|
||||
*/
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -178,8 +178,8 @@ enum ImplTraitContext {
|
||||
|
||||
/// Used for tracking import use types which will be used for redundant import checking.
|
||||
/// ### Used::Scope Example
|
||||
/// ```rust,ignore (redundant_imports)
|
||||
/// #![deny(unused_imports)]
|
||||
/// ```rust,compile_fail
|
||||
/// #![deny(redundant_imports)]
|
||||
/// use std::mem::drop;
|
||||
/// fn main() {
|
||||
/// let s = Box::new(32);
|
||||
|
||||
Reference in New Issue
Block a user