about summary refs log tree commit diff
diff options
context:
space:
mode:
-rw-r--r--compiler/rustc_passes/src/lang_items.rs17
-rw-r--r--compiler/rustc_symbol_mangling/src/test.rs23
-rw-r--r--compiler/rustc_typeck/src/check_unused.rs15
3 files changed, 49 insertions, 6 deletions
diff --git a/compiler/rustc_passes/src/lang_items.rs b/compiler/rustc_passes/src/lang_items.rs
index 0c934ecc913..3107b6d1811 100644
--- a/compiler/rustc_passes/src/lang_items.rs
+++ b/compiler/rustc_passes/src/lang_items.rs
@@ -259,7 +259,22 @@ fn get_lang_items(tcx: TyCtxt<'_>, (): ()) -> LanguageItems {
     }
 
     // Collect lang items in this crate.
-    tcx.hir().visit_all_item_likes(&mut collector);
+    let crate_items = tcx.hir_crate_items(());
+
+    for id in crate_items.items() {
+        let item = tcx.hir().item(id);
+        collector.visit_item(item);
+    }
+
+    for id in crate_items.trait_items() {
+        let item = tcx.hir().trait_item(id);
+        collector.visit_trait_item(item);
+    }
+
+    for id in crate_items.impl_items() {
+        let item = tcx.hir().impl_item(id);
+        collector.visit_impl_item(item);
+    }
 
     // Extract out the found lang items.
     let LanguageItemCollector { mut items, .. } = collector;
diff --git a/compiler/rustc_symbol_mangling/src/test.rs b/compiler/rustc_symbol_mangling/src/test.rs
index 611943652a6..1f66c717f28 100644
--- a/compiler/rustc_symbol_mangling/src/test.rs
+++ b/compiler/rustc_symbol_mangling/src/test.rs
@@ -6,6 +6,7 @@
 
 use rustc_hir as hir;
 use rustc_hir::def_id::LocalDefId;
+use rustc_hir::itemlikevisit::ItemLikeVisitor;
 use rustc_middle::ty::print::with_no_trimmed_paths;
 use rustc_middle::ty::{subst::InternalSubsts, Instance, TyCtxt};
 use rustc_span::symbol::{sym, Symbol};
@@ -23,7 +24,27 @@ pub fn report_symbol_names(tcx: TyCtxt<'_>) {
 
     tcx.dep_graph.with_ignore(|| {
         let mut visitor = SymbolNamesTest { tcx };
-        tcx.hir().visit_all_item_likes(&mut visitor);
+        let crate_items = tcx.hir_crate_items(());
+
+        for id in crate_items.items() {
+            let item = tcx.hir().item(id);
+            visitor.visit_item(item);
+        }
+
+        for id in crate_items.trait_items() {
+            let item = tcx.hir().trait_item(id);
+            visitor.visit_trait_item(item);
+        }
+
+        for id in crate_items.impl_items() {
+            let item = tcx.hir().impl_item(id);
+            visitor.visit_impl_item(item);
+        }
+
+        for id in crate_items.foreign_items() {
+            let item = tcx.hir().foreign_item(id);
+            visitor.visit_foreign_item(item);
+        }
     })
 }
 
diff --git a/compiler/rustc_typeck/src/check_unused.rs b/compiler/rustc_typeck/src/check_unused.rs
index 1826c3f5f7f..94b7ff96c3c 100644
--- a/compiler/rustc_typeck/src/check_unused.rs
+++ b/compiler/rustc_typeck/src/check_unused.rs
@@ -16,7 +16,11 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
     }
 
     let mut visitor = CheckVisitor { tcx, used_trait_imports };
-    tcx.hir().visit_all_item_likes(&mut visitor);
+
+    for id in tcx.hir().items() {
+        let item = tcx.hir().item(id);
+        visitor.visit_item(item);
+    }
 
     unused_crates_lint(tcx);
 }
@@ -110,9 +114,12 @@ fn unused_crates_lint(tcx: TyCtxt<'_>) {
 
     // Collect all the extern crates (in a reliable order).
     let mut crates_to_lint = vec![];
-    tcx.hir().visit_all_item_likes(&mut CollectExternCrateVisitor {
-        crates_to_lint: &mut crates_to_lint,
-    });
+    let mut visitor = CollectExternCrateVisitor { crates_to_lint: &mut crates_to_lint };
+
+    for id in tcx.hir().items() {
+        let item = tcx.hir().item(id);
+        visitor.visit_item(item);
+    }
 
     let extern_prelude = &tcx.resolutions(()).extern_prelude;