Skip to content

Commit 0d01ee9

Browse files
committed
remove ItemLikeVisitor impls in incremental, interface, metadata and symbol_mangling crates
Signed-off-by: Miguel Guarniz <mi9uel9@gmail.com>
1 parent 28aa2dd commit 0d01ee9

File tree

5 files changed

+24
-103
lines changed

5 files changed

+24
-103
lines changed

compiler/rustc_incremental/src/persist/dirty_clean.rs

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,6 @@ use rustc_data_structures::fx::FxHashSet;
2424
use rustc_hir as hir;
2525
use rustc_hir::def_id::LocalDefId;
2626
use rustc_hir::intravisit;
27-
use rustc_hir::itemlikevisit::ItemLikeVisitor;
2827
use rustc_hir::Node as HirNode;
2928
use rustc_hir::{ImplItemKind, ItemKind as HirItem, TraitItemKind};
3029
use rustc_middle::dep_graph::{label_strs, DepNode, DepNodeExt};
@@ -409,24 +408,6 @@ impl<'tcx> DirtyCleanVisitor<'tcx> {
409408
}
410409
}
411410

412-
impl<'tcx> ItemLikeVisitor<'tcx> for DirtyCleanVisitor<'tcx> {
413-
fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) {
414-
self.check_item(item.def_id, item.span);
415-
}
416-
417-
fn visit_trait_item(&mut self, item: &hir::TraitItem<'_>) {
418-
self.check_item(item.def_id, item.span);
419-
}
420-
421-
fn visit_impl_item(&mut self, item: &hir::ImplItem<'_>) {
422-
self.check_item(item.def_id, item.span);
423-
}
424-
425-
fn visit_foreign_item(&mut self, item: &hir::ForeignItem<'_>) {
426-
self.check_item(item.def_id, item.span);
427-
}
428-
}
429-
430411
/// Given a `#[rustc_clean]` attribute, scan for a `cfg="foo"` attribute and check whether we have
431412
/// a cfg flag called `foo`.
432413
fn check_config(tcx: TyCtxt<'_>, attr: &Attribute) -> bool {
Lines changed: 2 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
use rustc_hir as hir;
22
use rustc_hir::def_id::LocalDefId;
3-
use rustc_hir::itemlikevisit::ItemLikeVisitor;
43
use rustc_middle::ty::query::Providers;
54
use rustc_middle::ty::TyCtxt;
65
use rustc_span::symbol::sym;
@@ -9,10 +8,9 @@ fn proc_macro_decls_static(tcx: TyCtxt<'_>, (): ()) -> Option<LocalDefId> {
98
let mut finder = Finder { tcx, decls: None };
109

1110
for id in tcx.hir().items() {
12-
let item = tcx.hir().item(id);
13-
let attrs = finder.tcx.hir().attrs(item.hir_id());
11+
let attrs = finder.tcx.hir().attrs(id.hir_id());
1412
if finder.tcx.sess.contains_name(attrs, sym::rustc_proc_macro_decls) {
15-
finder.decls = Some(item.hir_id());
13+
finder.decls = Some(id.hir_id());
1614
}
1715
}
1816

@@ -24,21 +22,6 @@ struct Finder<'tcx> {
2422
decls: Option<hir::HirId>,
2523
}
2624

27-
impl<'v> ItemLikeVisitor<'v> for Finder<'_> {
28-
fn visit_item(&mut self, item: &hir::Item<'_>) {
29-
let attrs = self.tcx.hir().attrs(item.hir_id());
30-
if self.tcx.sess.contains_name(attrs, sym::rustc_proc_macro_decls) {
31-
self.decls = Some(item.hir_id());
32-
}
33-
}
34-
35-
fn visit_trait_item(&mut self, _trait_item: &hir::TraitItem<'_>) {}
36-
37-
fn visit_impl_item(&mut self, _impl_item: &hir::ImplItem<'_>) {}
38-
39-
fn visit_foreign_item(&mut self, _foreign_item: &hir::ForeignItem<'_>) {}
40-
}
41-
4225
pub(crate) fn provide(providers: &mut Providers) {
4326
*providers = Providers { proc_macro_decls_static, ..*providers };
4427
}
Lines changed: 8 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -1,36 +1,19 @@
11
use rustc_hir as hir;
2-
use rustc_hir::itemlikevisit::ItemLikeVisitor;
2+
use rustc_hir::def::DefKind;
33
use rustc_middle::ty::TyCtxt;
44
use rustc_session::cstore::ForeignModule;
55

66
crate fn collect(tcx: TyCtxt<'_>) -> Vec<ForeignModule> {
77
let mut modules = Vec::new();
88
for id in tcx.hir().items() {
9-
let item = tcx.hir().item(id);
10-
let hir::ItemKind::ForeignMod { items, .. } = item.kind else {
9+
if !matches!(tcx.hir().def_kind(id.def_id), DefKind::ForeignMod) {
1110
continue;
12-
};
13-
let foreign_items = items.iter().map(|it| it.id.def_id.to_def_id()).collect();
14-
modules.push(ForeignModule { foreign_items, def_id: id.def_id.to_def_id() });
11+
}
12+
let item = tcx.hir().item(id);
13+
if let hir::ItemKind::ForeignMod { items, .. } = item.kind {
14+
let foreign_items = items.iter().map(|it| it.id.def_id.to_def_id()).collect();
15+
modules.push(ForeignModule { foreign_items, def_id: id.def_id.to_def_id() });
16+
}
1517
}
1618
modules
1719
}
18-
19-
struct Collector {
20-
modules: Vec<ForeignModule>,
21-
}
22-
23-
impl<'tcx> ItemLikeVisitor<'tcx> for Collector {
24-
fn visit_item(&mut self, it: &'tcx hir::Item<'tcx>) {
25-
let hir::ItemKind::ForeignMod { items, .. } = it.kind else {
26-
return;
27-
};
28-
29-
let foreign_items = items.iter().map(|it| it.id.def_id.to_def_id()).collect();
30-
self.modules.push(ForeignModule { foreign_items, def_id: it.def_id.to_def_id() });
31-
}
32-
33-
fn visit_trait_item(&mut self, _it: &'tcx hir::TraitItem<'tcx>) {}
34-
fn visit_impl_item(&mut self, _it: &'tcx hir::ImplItem<'tcx>) {}
35-
fn visit_foreign_item(&mut self, _it: &'tcx hir::ForeignItem<'tcx>) {}
36-
}

compiler/rustc_metadata/src/native_libs.rs

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rustc_attr as attr;
33
use rustc_data_structures::fx::FxHashSet;
44
use rustc_errors::struct_span_err;
55
use rustc_hir as hir;
6-
use rustc_hir::itemlikevisit::ItemLikeVisitor;
6+
use rustc_hir::def::DefKind;
77
use rustc_middle::ty::{List, ParamEnv, ParamEnvAnd, Ty, TyCtxt};
88
use rustc_session::cstore::{DllCallingConvention, DllImport, NativeLib};
99
use rustc_session::parse::feature_err;
@@ -16,8 +16,7 @@ use rustc_target::spec::abi::Abi;
1616
crate fn collect(tcx: TyCtxt<'_>) -> Vec<NativeLib> {
1717
let mut collector = Collector { tcx, libs: Vec::new() };
1818
for id in tcx.hir().items() {
19-
let item = tcx.hir().item(id);
20-
collector.visit_item(item);
19+
collector.process_item(id);
2120
}
2221
collector.process_command_line();
2322
collector.libs
@@ -35,8 +34,13 @@ struct Collector<'tcx> {
3534
libs: Vec<NativeLib>,
3635
}
3736

38-
impl<'tcx> ItemLikeVisitor<'tcx> for Collector<'tcx> {
39-
fn visit_item(&mut self, it: &'tcx hir::Item<'tcx>) {
37+
impl<'tcx> Collector<'tcx> {
38+
fn process_item(&mut self, id: rustc_hir::ItemId) {
39+
if !matches!(self.tcx.hir().def_kind(id.def_id), DefKind::ForeignMod) {
40+
return;
41+
}
42+
43+
let it = self.tcx.hir().item(id);
4044
let hir::ItemKind::ForeignMod { abi, items: foreign_mod_items } = it.kind else {
4145
return;
4246
};
@@ -255,12 +259,6 @@ impl<'tcx> ItemLikeVisitor<'tcx> for Collector<'tcx> {
255259
}
256260
}
257261

258-
fn visit_trait_item(&mut self, _it: &'tcx hir::TraitItem<'tcx>) {}
259-
fn visit_impl_item(&mut self, _it: &'tcx hir::ImplItem<'tcx>) {}
260-
fn visit_foreign_item(&mut self, _it: &'tcx hir::ForeignItem<'tcx>) {}
261-
}
262-
263-
impl Collector<'_> {
264262
fn register_native_lib(&mut self, span: Option<Span>, lib: NativeLib) {
265263
if lib.name.as_ref().map_or(false, |&s| s == kw::Empty) {
266264
match span {

compiler/rustc_symbol_mangling/src/test.rs

Lines changed: 5 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,7 @@
44
//! def-path. This is used for unit testing the code that generates
55
//! paths etc in all kinds of annoying scenarios.
66
7-
use rustc_hir as hir;
87
use rustc_hir::def_id::LocalDefId;
9-
use rustc_hir::itemlikevisit::ItemLikeVisitor;
108
use rustc_middle::ty::print::with_no_trimmed_paths;
119
use rustc_middle::ty::{subst::InternalSubsts, Instance, TyCtxt};
1210
use rustc_span::symbol::{sym, Symbol};
@@ -23,27 +21,23 @@ pub fn report_symbol_names(tcx: TyCtxt<'_>) {
2321
}
2422

2523
tcx.dep_graph.with_ignore(|| {
26-
let mut visitor = SymbolNamesTest { tcx };
24+
let mut symbol_names = SymbolNamesTest { tcx };
2725
let crate_items = tcx.hir_crate_items(());
2826

2927
for id in crate_items.items() {
30-
let item = tcx.hir().item(id);
31-
visitor.visit_item(item);
28+
symbol_names.process_attrs(id.def_id);
3229
}
3330

3431
for id in crate_items.trait_items() {
35-
let item = tcx.hir().trait_item(id);
36-
visitor.visit_trait_item(item);
32+
symbol_names.process_attrs(id.def_id);
3733
}
3834

3935
for id in crate_items.impl_items() {
40-
let item = tcx.hir().impl_item(id);
41-
visitor.visit_impl_item(item);
36+
symbol_names.process_attrs(id.def_id);
4237
}
4338

4439
for id in crate_items.foreign_items() {
45-
let item = tcx.hir().foreign_item(id);
46-
visitor.visit_foreign_item(item);
40+
symbol_names.process_attrs(id.def_id);
4741
}
4842
})
4943
}
@@ -79,21 +73,3 @@ impl SymbolNamesTest<'_> {
7973
}
8074
}
8175
}
82-
83-
impl<'tcx> hir::itemlikevisit::ItemLikeVisitor<'tcx> for SymbolNamesTest<'tcx> {
84-
fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) {
85-
self.process_attrs(item.def_id);
86-
}
87-
88-
fn visit_trait_item(&mut self, trait_item: &'tcx hir::TraitItem<'tcx>) {
89-
self.process_attrs(trait_item.def_id);
90-
}
91-
92-
fn visit_impl_item(&mut self, impl_item: &'tcx hir::ImplItem<'tcx>) {
93-
self.process_attrs(impl_item.def_id);
94-
}
95-
96-
fn visit_foreign_item(&mut self, foreign_item: &'tcx hir::ForeignItem<'tcx>) {
97-
self.process_attrs(foreign_item.def_id);
98-
}
99-
}

0 commit comments

Comments
 (0)