about summary refs log tree commit diff
path: root/compiler/rustc_metadata
diff options
context:
space:
mode:
Diffstat (limited to 'compiler/rustc_metadata')
-rw-r--r--compiler/rustc_metadata/src/foreign_modules.rs13
-rw-r--r--compiler/rustc_metadata/src/native_libs.rs5
-rw-r--r--compiler/rustc_metadata/src/rmeta/encoder.rs6
3 files changed, 19 insertions, 5 deletions
diff --git a/compiler/rustc_metadata/src/foreign_modules.rs b/compiler/rustc_metadata/src/foreign_modules.rs
index c4ee1e19128..cb961d4d605 100644
--- a/compiler/rustc_metadata/src/foreign_modules.rs
+++ b/compiler/rustc_metadata/src/foreign_modules.rs
@@ -4,9 +4,16 @@ use rustc_middle::ty::TyCtxt;
 use rustc_session::cstore::ForeignModule;
 
 crate fn collect(tcx: TyCtxt<'_>) -> Vec<ForeignModule> {
-    let mut collector = Collector { modules: Vec::new() };
-    tcx.hir().visit_all_item_likes(&mut collector);
-    collector.modules
+    let mut modules = Vec::new();
+    for id in tcx.hir().items() {
+        let item = tcx.hir().item(id);
+        let hir::ItemKind::ForeignMod { items, .. } = item.kind else {
+            continue;
+        };
+        let foreign_items = items.iter().map(|it| it.id.def_id.to_def_id()).collect();
+        modules.push(ForeignModule { foreign_items, def_id: id.def_id.to_def_id() });
+    }
+    modules
 }
 
 struct Collector {
diff --git a/compiler/rustc_metadata/src/native_libs.rs b/compiler/rustc_metadata/src/native_libs.rs
index 1cbfb0bd554..547c4876cb8 100644
--- a/compiler/rustc_metadata/src/native_libs.rs
+++ b/compiler/rustc_metadata/src/native_libs.rs
@@ -15,7 +15,10 @@ use rustc_target::spec::abi::Abi;
 
 crate fn collect(tcx: TyCtxt<'_>) -> Vec<NativeLib> {
     let mut collector = Collector { tcx, libs: Vec::new() };
-    tcx.hir().visit_all_item_likes(&mut collector);
+    for id in tcx.hir().items() {
+        let item = tcx.hir().item(id);
+        collector.visit_item(item);
+    }
     collector.process_command_line();
     collector.libs
 }
diff --git a/compiler/rustc_metadata/src/rmeta/encoder.rs b/compiler/rustc_metadata/src/rmeta/encoder.rs
index 6c758b8e5b6..6ad7a342bdc 100644
--- a/compiler/rustc_metadata/src/rmeta/encoder.rs
+++ b/compiler/rustc_metadata/src/rmeta/encoder.rs
@@ -1784,7 +1784,11 @@ impl<'a, 'tcx> EncodeContext<'a, 'tcx> {
         empty_proc_macro!(self);
         let tcx = self.tcx;
         let mut visitor = ImplsVisitor { tcx, impls: FxHashMap::default() };
-        tcx.hir().visit_all_item_likes(&mut visitor);
+
+        for id in tcx.hir().items() {
+            let item = tcx.hir().item(id);
+            visitor.visit_item(item);
+        }
 
         let mut all_impls: Vec<_> = visitor.impls.into_iter().collect();