summaryrefslogtreecommitdiffstats
path: root/compiler/rustc_hir_analysis/src/check_unused.rs
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_hir_analysis/src/check_unused.rs')
-rw-r--r--compiler/rustc_hir_analysis/src/check_unused.rs17
1 files changed, 13 insertions, 4 deletions
diff --git a/compiler/rustc_hir_analysis/src/check_unused.rs b/compiler/rustc_hir_analysis/src/check_unused.rs
index 268b9ac53..9ad73eeff 100644
--- a/compiler/rustc_hir_analysis/src/check_unused.rs
+++ b/compiler/rustc_hir_analysis/src/check_unused.rs
@@ -1,12 +1,21 @@
-use rustc_data_structures::unord::UnordSet;
+use rustc_data_structures::unord::{ExtendUnord, UnordSet};
use rustc_hir::def::DefKind;
use rustc_hir::def_id::LocalDefId;
+use rustc_middle::query::Providers;
use rustc_middle::ty::TyCtxt;
use rustc_session::lint;
-pub fn check_crate(tcx: TyCtxt<'_>) {
- let mut used_trait_imports: UnordSet<LocalDefId> = Default::default();
+pub fn provide(providers: &mut Providers) {
+ *providers = Providers { check_unused_traits, ..*providers };
+}
+
+fn check_unused_traits(tcx: TyCtxt<'_>, (): ()) {
+ let mut used_trait_imports = UnordSet::<LocalDefId>::default();
+ // FIXME: Use `tcx.hir().par_body_owners()` when we implement creating `DefId`s
+ // for anon constants during their parents' typeck.
+ // Doing so at current will produce queries cycle errors because it may typeck
+ // on anon constants directly.
for item_def_id in tcx.hir().body_owners() {
let imports = tcx.used_trait_imports(item_def_id);
debug!("GatherVisitor: item_def_id={:?} with imports {:#?}", item_def_id, imports);
@@ -27,7 +36,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
}
let (path, _) = item.expect_use();
let msg = if let Ok(snippet) = tcx.sess.source_map().span_to_snippet(path.span) {
- format!("unused import: `{}`", snippet)
+ format!("unused import: `{snippet}`")
} else {
"unused import".to_owned()
};