Skip to content

Commit 2e98879

Browse files
committed
change back to using tcx.hir() visit-item method
Signed-off-by: Miguel Guarniz <[email protected]>
1 parent f975d05 commit 2e98879

File tree

2 files changed

+8
-47
lines changed

2 files changed

+8
-47
lines changed

compiler/rustc_passes/src/check_const.rs

Lines changed: 7 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
use rustc_attr as attr;
1111
use rustc_errors::struct_span_err;
1212
use rustc_hir as hir;
13-
use rustc_hir::def::DefKind;
1413
use rustc_hir::def_id::LocalDefId;
1514
use rustc_hir::intravisit::{self, Visitor};
1615
use rustc_middle::hir::nested_filter;
@@ -58,41 +57,15 @@ impl NonConstExpr {
5857

5958
fn check_mod_const_bodies(tcx: TyCtxt<'_>, module_def_id: LocalDefId) {
6059
let mut vis = CheckConstVisitor::new(tcx);
61-
let module = tcx.hir_module_items(module_def_id);
62-
63-
for id in module.items() {
64-
vis.visit_item(tcx.hir().item(id));
65-
check_item(tcx, id);
66-
}
67-
68-
for id in module.trait_items() {
69-
vis.visit_trait_item(tcx.hir().trait_item(id));
70-
}
71-
72-
for id in module.impl_items() {
73-
vis.visit_impl_item(tcx.hir().impl_item(id));
74-
}
75-
76-
for id in module.foreign_items() {
77-
vis.visit_foreign_item(tcx.hir().foreign_item(id));
78-
}
79-
80-
// for id in tcx.hir_module_items(module_def_id).items() {
81-
// check_item(tcx, id);
82-
// }
60+
tcx.hir().deep_visit_item_likes_in_module(module_def_id, &mut vis);
8361
}
8462

8563
pub(crate) fn provide(providers: &mut Providers) {
8664
*providers = Providers { check_mod_const_bodies, ..*providers };
8765
}
8866

89-
fn check_item<'tcx>(tcx: TyCtxt<'tcx>, id: hir::ItemId) {
67+
fn check_item<'tcx>(tcx: TyCtxt<'tcx>, item: &'tcx hir::Item<'tcx>) {
9068
let _: Option<_> = try {
91-
if !matches!(tcx.def_kind(id.def_id), DefKind::Impl) {
92-
None?
93-
}
94-
95-
let item = tcx.hir().item(id);
9669
if let hir::ItemKind::Impl(ref imp) = item.kind && let hir::Constness::Const = imp.constness {
9770
let trait_def_id = imp.of_trait.as_ref()?.trait_def_id()?;
9871
let ancestors = tcx
@@ -274,6 +247,11 @@ impl<'tcx> Visitor<'tcx> for CheckConstVisitor<'tcx> {
274247
self.tcx.hir()
275248
}
276249

250+
fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) {
251+
intravisit::walk_item(self, item);
252+
check_item(self.tcx, item);
253+
}
254+
277255
fn visit_anon_const(&mut self, anon: &'tcx hir::AnonConst) {
278256
let kind = Some(hir::ConstContext::Const);
279257
self.recurse_into(kind, None, |this| intravisit::walk_anon_const(this, anon));

compiler/rustc_passes/src/hir_id_validator.rs

Lines changed: 1 addition & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ use rustc_data_structures::sync::Lock;
33
use rustc_hir as hir;
44
use rustc_hir::def_id::{LocalDefId, CRATE_DEF_ID};
55
use rustc_hir::intravisit;
6-
use rustc_hir::intravisit::Visitor;
76
use rustc_hir::{HirId, ItemLocalId};
87
use rustc_middle::hir::map::Map;
98
use rustc_middle::hir::nested_filter;
@@ -27,23 +26,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) {
2726
errors: &errors,
2827
};
2928

30-
let module = tcx.hir_module_items(module_id);
31-
32-
for id in module.items() {
33-
v.visit_item(tcx.hir().item(id))
34-
}
35-
36-
for id in module.trait_items() {
37-
v.visit_trait_item(tcx.hir().trait_item(id))
38-
}
39-
40-
for id in module.impl_items() {
41-
v.visit_impl_item(tcx.hir().impl_item(id))
42-
}
43-
44-
for id in module.foreign_items() {
45-
v.visit_foreign_item(tcx.hir().foreign_item(id))
46-
}
29+
tcx.hir().deep_visit_item_likes_in_module(module_id, &mut v);
4730
});
4831

4932
let errors = errors.into_inner();

0 commit comments

Comments
 (0)