From 58aae1113f752e0daaa3ae2c059e02d7e014068a Mon Sep 17 00:00:00 2001 From: surechen Date: Thu, 11 Apr 2024 10:59:42 +0800 Subject: [PATCH] Block lint redundant_import's report and wait for lang team's decision accoriding to #121708. --- compiler/rustc_resolve/src/check_unused.rs | 86 ++++++++++--------- compiler/rustc_resolve/src/imports.rs | 1 + .../redundant-import-issue-121915-2015.rs | 1 + .../imports/redundant-import-issue-121915.rs | 1 + .../ui/imports/suggest-remove-issue-121315.rs | 1 + ...-unnecessary-qualification-issue-121331.rs | 1 + tests/ui/lint/unused/issue-59896.rs | 1 + .../use-redundant-glob-parent.rs | 1 + .../lint/use-redundant/use-redundant-glob.rs | 1 + .../use-redundant-issue-71450.rs | 1 + .../use-redundant-prelude-rust-2015.rs | 1 + .../use-redundant-prelude-rust-2021.rs | 1 + tests/ui/lint/use-redundant/use-redundant.rs | 1 + 13 files changed, 56 insertions(+), 42 deletions(-) diff --git a/compiler/rustc_resolve/src/check_unused.rs b/compiler/rustc_resolve/src/check_unused.rs index f6004fed8284e..eab3a4f6d8a85 100644 --- a/compiler/rustc_resolve/src/check_unused.rs +++ b/compiler/rustc_resolve/src/check_unused.rs @@ -30,7 +30,7 @@ use crate::Resolver; use crate::{LexicalScopeBinding, NameBindingKind}; use rustc_ast as ast; use rustc_ast::visit::{self, Visitor}; -use rustc_data_structures::fx::{FxHashMap, FxIndexMap, FxIndexSet}; +use rustc_data_structures::fx::{FxHashMap, FxIndexMap}; use rustc_data_structures::unord::UnordSet; use rustc_errors::{pluralize, MultiSpan}; use rustc_hir::def::{DefKind, Res}; @@ -494,35 +494,36 @@ impl Resolver<'_, '_> { ); } + // FIXME(#121708): Block redundant_import report and wait for lang team's decision. let unused_imports = visitor.unused_imports; - let mut check_redundant_imports = FxIndexSet::default(); - for module in self.arenas.local_modules().iter() { - for (_key, resolution) in self.resolutions(*module).borrow().iter() { - let resolution = resolution.borrow(); - - if let Some(binding) = resolution.binding - && let NameBindingKind::Import { import, .. } = binding.kind - && let ImportKind::Single { id, .. } = import.kind - { - if let Some(unused_import) = unused_imports.get(&import.root_id) - && unused_import.unused.contains(&id) - { - continue; - } - - check_redundant_imports.insert(import); - } - } - } - - let mut redundant_imports = UnordSet::default(); - for import in check_redundant_imports { - if self.check_for_redundant_imports(import) - && let Some(id) = import.id() - { - redundant_imports.insert(id); - } - } + // let mut check_redundant_imports = FxIndexSet::default(); + // for module in self.arenas.local_modules().iter() { + // for (_key, resolution) in self.resolutions(*module).borrow().iter() { + // let resolution = resolution.borrow(); + + // if let Some(binding) = resolution.binding + // && let NameBindingKind::Import { import, .. } = binding.kind + // && let ImportKind::Single { id, .. } = import.kind + // { + // if let Some(unused_import) = unused_imports.get(&import.root_id) + // && unused_import.unused.contains(&id) + // { + // continue; + // } + + // check_redundant_imports.insert(import); + // } + // } + // } + + // let mut redundant_imports = UnordSet::default(); + // for import in check_redundant_imports { + // if self.check_for_redundant_imports(import) + // && let Some(id) = import.id() + // { + // redundant_imports.insert(id); + // } + // } // The lint fixes for unused_import and unnecessary_qualification may conflict. // Deleting both unused imports and unnecessary segments of an item may result @@ -530,8 +531,9 @@ impl Resolver<'_, '_> { for unn_qua in &self.potentially_unnecessary_qualifications { if let LexicalScopeBinding::Item(name_binding) = unn_qua.binding && let NameBindingKind::Import { import, .. } = name_binding.kind - && (is_unused_import(import, &unused_imports) - || is_redundant_import(import, &redundant_imports)) + && is_unused_import(import, &unused_imports) + // && (is_unused_import(import, &unused_imports) + // || is_redundant_import(import, &redundant_imports)) { continue; } @@ -545,17 +547,17 @@ impl Resolver<'_, '_> { ); } - fn is_redundant_import( - import: Import<'_>, - redundant_imports: &UnordSet, - ) -> bool { - if let Some(id) = import.id() - && redundant_imports.contains(&id) - { - return true; - } - false - } + // fn is_redundant_import( + // import: Import<'_>, + // redundant_imports: &UnordSet, + // ) -> bool { + // if let Some(id) = import.id() + // && redundant_imports.contains(&id) + // { + // return true; + // } + // false + // } fn is_unused_import( import: Import<'_>, diff --git a/compiler/rustc_resolve/src/imports.rs b/compiler/rustc_resolve/src/imports.rs index 9bf3e9ccabdf1..0347b7dd325ad 100644 --- a/compiler/rustc_resolve/src/imports.rs +++ b/compiler/rustc_resolve/src/imports.rs @@ -1306,6 +1306,7 @@ impl<'a, 'tcx> Resolver<'a, 'tcx> { None } + #[allow(dead_code)] pub(crate) fn check_for_redundant_imports(&mut self, import: Import<'a>) -> bool { // This function is only called for single imports. let ImportKind::Single { diff --git a/tests/ui/imports/redundant-import-issue-121915-2015.rs b/tests/ui/imports/redundant-import-issue-121915-2015.rs index d41d190bb58c4..2e429ffc5e56a 100644 --- a/tests/ui/imports/redundant-import-issue-121915-2015.rs +++ b/tests/ui/imports/redundant-import-issue-121915-2015.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ compile-flags: --extern aux_issue_121915 --edition 2015 //@ aux-build: aux-issue-121915.rs diff --git a/tests/ui/imports/redundant-import-issue-121915.rs b/tests/ui/imports/redundant-import-issue-121915.rs index 237acc4af2565..3cb5059c57a88 100644 --- a/tests/ui/imports/redundant-import-issue-121915.rs +++ b/tests/ui/imports/redundant-import-issue-121915.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ compile-flags: --extern aux_issue_121915 --edition 2018 //@ aux-build: aux-issue-121915.rs diff --git a/tests/ui/imports/suggest-remove-issue-121315.rs b/tests/ui/imports/suggest-remove-issue-121315.rs index 63533480ec127..c80003560284c 100644 --- a/tests/ui/imports/suggest-remove-issue-121315.rs +++ b/tests/ui/imports/suggest-remove-issue-121315.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ compile-flags: --edition 2021 #![deny(unused_imports)] #![allow(dead_code)] diff --git a/tests/ui/lint/unnecessary-qualification/lint-unnecessary-qualification-issue-121331.rs b/tests/ui/lint/unnecessary-qualification/lint-unnecessary-qualification-issue-121331.rs index 4d79f5ab74530..5f949be8f4fe7 100644 --- a/tests/ui/lint/unnecessary-qualification/lint-unnecessary-qualification-issue-121331.rs +++ b/tests/ui/lint/unnecessary-qualification/lint-unnecessary-qualification-issue-121331.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ run-rustfix //@ edition:2021 #![deny(unused_qualifications)] diff --git a/tests/ui/lint/unused/issue-59896.rs b/tests/ui/lint/unused/issue-59896.rs index ff9f19acf8471..dccabd2cf8a15 100644 --- a/tests/ui/lint/unused/issue-59896.rs +++ b/tests/ui/lint/unused/issue-59896.rs @@ -1,3 +1,4 @@ +//@ ignore-test #![deny(unused_imports)] struct S; diff --git a/tests/ui/lint/use-redundant/use-redundant-glob-parent.rs b/tests/ui/lint/use-redundant/use-redundant-glob-parent.rs index 28d1fea98b582..87f3db7a6ec7c 100644 --- a/tests/ui/lint/use-redundant/use-redundant-glob-parent.rs +++ b/tests/ui/lint/use-redundant/use-redundant-glob-parent.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ check-pass #![warn(unused_imports)] diff --git a/tests/ui/lint/use-redundant/use-redundant-glob.rs b/tests/ui/lint/use-redundant/use-redundant-glob.rs index 3d3fe2579b54c..dc00d4417236a 100644 --- a/tests/ui/lint/use-redundant/use-redundant-glob.rs +++ b/tests/ui/lint/use-redundant/use-redundant-glob.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ check-pass #![warn(unused_imports)] diff --git a/tests/ui/lint/use-redundant/use-redundant-issue-71450.rs b/tests/ui/lint/use-redundant/use-redundant-issue-71450.rs index d0fb3454d3f2b..6621dd32e01e0 100644 --- a/tests/ui/lint/use-redundant/use-redundant-issue-71450.rs +++ b/tests/ui/lint/use-redundant/use-redundant-issue-71450.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ check-pass #![warn(unused_imports)] diff --git a/tests/ui/lint/use-redundant/use-redundant-prelude-rust-2015.rs b/tests/ui/lint/use-redundant/use-redundant-prelude-rust-2015.rs index ae5118b2729b9..506c67f6c6d88 100644 --- a/tests/ui/lint/use-redundant/use-redundant-prelude-rust-2015.rs +++ b/tests/ui/lint/use-redundant/use-redundant-prelude-rust-2015.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ check-pass #![warn(unused_imports)] diff --git a/tests/ui/lint/use-redundant/use-redundant-prelude-rust-2021.rs b/tests/ui/lint/use-redundant/use-redundant-prelude-rust-2021.rs index cb4dcb6c0bd67..665d747a94a61 100644 --- a/tests/ui/lint/use-redundant/use-redundant-prelude-rust-2021.rs +++ b/tests/ui/lint/use-redundant/use-redundant-prelude-rust-2021.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ check-pass //@ edition:2021 #![warn(unused_imports)] diff --git a/tests/ui/lint/use-redundant/use-redundant.rs b/tests/ui/lint/use-redundant/use-redundant.rs index 88d3ee75a3f2d..373673f3d7f37 100644 --- a/tests/ui/lint/use-redundant/use-redundant.rs +++ b/tests/ui/lint/use-redundant/use-redundant.rs @@ -1,3 +1,4 @@ +//@ ignore-test //@ check-pass #![warn(unused_imports)]