Skip to content

Commit 28aa2dd

Browse files
committed
remove some uses of visit_all_item_likes in typeck, symbol_mangling and passes crates
Signed-off-by: Miguel Guarniz <mi9uel9@gmail.com>
1 parent 0baf85e commit 28aa2dd

File tree

3 files changed

+49
-6
lines changed

3 files changed

+49
-6
lines changed

compiler/rustc_passes/src/lang_items.rs

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,22 @@ fn get_lang_items(tcx: TyCtxt<'_>, (): ()) -> LanguageItems {
259259
}
260260

261261
// Collect lang items in this crate.
262-
tcx.hir().visit_all_item_likes(&mut collector);
262+
let crate_items = tcx.hir_crate_items(());
263+
264+
for id in crate_items.items() {
265+
let item = tcx.hir().item(id);
266+
collector.visit_item(item);
267+
}
268+
269+
for id in crate_items.trait_items() {
270+
let item = tcx.hir().trait_item(id);
271+
collector.visit_trait_item(item);
272+
}
273+
274+
for id in crate_items.impl_items() {
275+
let item = tcx.hir().impl_item(id);
276+
collector.visit_impl_item(item);
277+
}
263278

264279
// Extract out the found lang items.
265280
let LanguageItemCollector { mut items, .. } = collector;

compiler/rustc_symbol_mangling/src/test.rs

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
77
use rustc_hir as hir;
88
use rustc_hir::def_id::LocalDefId;
9+
use rustc_hir::itemlikevisit::ItemLikeVisitor;
910
use rustc_middle::ty::print::with_no_trimmed_paths;
1011
use rustc_middle::ty::{subst::InternalSubsts, Instance, TyCtxt};
1112
use rustc_span::symbol::{sym, Symbol};
@@ -23,7 +24,27 @@ pub fn report_symbol_names(tcx: TyCtxt<'_>) {
2324

2425
tcx.dep_graph.with_ignore(|| {
2526
let mut visitor = SymbolNamesTest { tcx };
26-
tcx.hir().visit_all_item_likes(&mut visitor);
27+
let crate_items = tcx.hir_crate_items(());
28+
29+
for id in crate_items.items() {
30+
let item = tcx.hir().item(id);
31+
visitor.visit_item(item);
32+
}
33+
34+
for id in crate_items.trait_items() {
35+
let item = tcx.hir().trait_item(id);
36+
visitor.visit_trait_item(item);
37+
}
38+
39+
for id in crate_items.impl_items() {
40+
let item = tcx.hir().impl_item(id);
41+
visitor.visit_impl_item(item);
42+
}
43+
44+
for id in crate_items.foreign_items() {
45+
let item = tcx.hir().foreign_item(id);
46+
visitor.visit_foreign_item(item);
47+
}
2748
})
2849
}
2950

compiler/rustc_typeck/src/check_unused.rs

Lines changed: 11 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,11 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
1616
}
1717

1818
let mut visitor = CheckVisitor { tcx, used_trait_imports };
19-
tcx.hir().visit_all_item_likes(&mut visitor);
19+
20+
for id in tcx.hir().items() {
21+
let item = tcx.hir().item(id);
22+
visitor.visit_item(item);
23+
}
2024

2125
unused_crates_lint(tcx);
2226
}
@@ -110,9 +114,12 @@ fn unused_crates_lint(tcx: TyCtxt<'_>) {
110114

111115
// Collect all the extern crates (in a reliable order).
112116
let mut crates_to_lint = vec![];
113-
tcx.hir().visit_all_item_likes(&mut CollectExternCrateVisitor {
114-
crates_to_lint: &mut crates_to_lint,
115-
});
117+
let mut visitor = CollectExternCrateVisitor { crates_to_lint: &mut crates_to_lint };
118+
119+
for id in tcx.hir().items() {
120+
let item = tcx.hir().item(id);
121+
visitor.visit_item(item);
122+
}
116123

117124
let extern_prelude = &tcx.resolutions(()).extern_prelude;
118125

0 commit comments

Comments
 (0)