diff options
Diffstat (limited to 'compiler/rustc_metadata')
| -rw-r--r-- | compiler/rustc_metadata/src/foreign_modules.rs | 13 | ||||
| -rw-r--r-- | compiler/rustc_metadata/src/native_libs.rs | 5 | ||||
| -rw-r--r-- | compiler/rustc_metadata/src/rmeta/encoder.rs | 6 |
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(); |
