From 2e988794037e821cff9b8b978d3895b2c6532adb Mon Sep 17 00:00:00 2001 From: Miguel Guarniz Date: Sat, 7 May 2022 17:11:15 -0400 Subject: [PATCH] change back to using tcx.hir() visit-item method Signed-off-by: Miguel Guarniz --- compiler/rustc_passes/src/check_const.rs | 36 ++++--------------- compiler/rustc_passes/src/hir_id_validator.rs | 19 +--------- 2 files changed, 8 insertions(+), 47 deletions(-) diff --git a/compiler/rustc_passes/src/check_const.rs b/compiler/rustc_passes/src/check_const.rs index 0e4df831f3fe..2405c6320603 100644 --- a/compiler/rustc_passes/src/check_const.rs +++ b/compiler/rustc_passes/src/check_const.rs @@ -10,7 +10,6 @@ use rustc_attr as attr; use rustc_errors::struct_span_err; use rustc_hir as hir; -use rustc_hir::def::DefKind; use rustc_hir::def_id::LocalDefId; use rustc_hir::intravisit::{self, Visitor}; use rustc_middle::hir::nested_filter; @@ -58,41 +57,15 @@ impl NonConstExpr { fn check_mod_const_bodies(tcx: TyCtxt<'_>, module_def_id: LocalDefId) { let mut vis = CheckConstVisitor::new(tcx); - let module = tcx.hir_module_items(module_def_id); - - for id in module.items() { - vis.visit_item(tcx.hir().item(id)); - check_item(tcx, id); - } - - for id in module.trait_items() { - vis.visit_trait_item(tcx.hir().trait_item(id)); - } - - for id in module.impl_items() { - vis.visit_impl_item(tcx.hir().impl_item(id)); - } - - for id in module.foreign_items() { - vis.visit_foreign_item(tcx.hir().foreign_item(id)); - } - - // for id in tcx.hir_module_items(module_def_id).items() { - // check_item(tcx, id); - // } + tcx.hir().deep_visit_item_likes_in_module(module_def_id, &mut vis); } pub(crate) fn provide(providers: &mut Providers) { *providers = Providers { check_mod_const_bodies, ..*providers }; } -fn check_item<'tcx>(tcx: TyCtxt<'tcx>, id: hir::ItemId) { +fn check_item<'tcx>(tcx: TyCtxt<'tcx>, item: &'tcx hir::Item<'tcx>) { let _: Option<_> = try { - if !matches!(tcx.def_kind(id.def_id), DefKind::Impl) { - None? - } - - let item = tcx.hir().item(id); if let hir::ItemKind::Impl(ref imp) = item.kind && let hir::Constness::Const = imp.constness { let trait_def_id = imp.of_trait.as_ref()?.trait_def_id()?; let ancestors = tcx @@ -274,6 +247,11 @@ impl<'tcx> Visitor<'tcx> for CheckConstVisitor<'tcx> { self.tcx.hir() } + fn visit_item(&mut self, item: &'tcx hir::Item<'tcx>) { + intravisit::walk_item(self, item); + check_item(self.tcx, item); + } + fn visit_anon_const(&mut self, anon: &'tcx hir::AnonConst) { let kind = Some(hir::ConstContext::Const); self.recurse_into(kind, None, |this| intravisit::walk_anon_const(this, anon)); diff --git a/compiler/rustc_passes/src/hir_id_validator.rs b/compiler/rustc_passes/src/hir_id_validator.rs index b91249badd4e..762beefe8444 100644 --- a/compiler/rustc_passes/src/hir_id_validator.rs +++ b/compiler/rustc_passes/src/hir_id_validator.rs @@ -3,7 +3,6 @@ use rustc_data_structures::sync::Lock; use rustc_hir as hir; use rustc_hir::def_id::{LocalDefId, CRATE_DEF_ID}; use rustc_hir::intravisit; -use rustc_hir::intravisit::Visitor; use rustc_hir::{HirId, ItemLocalId}; use rustc_middle::hir::map::Map; use rustc_middle::hir::nested_filter; @@ -27,23 +26,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) { errors: &errors, }; - let module = tcx.hir_module_items(module_id); - - for id in module.items() { - v.visit_item(tcx.hir().item(id)) - } - - for id in module.trait_items() { - v.visit_trait_item(tcx.hir().trait_item(id)) - } - - for id in module.impl_items() { - v.visit_impl_item(tcx.hir().impl_item(id)) - } - - for id in module.foreign_items() { - v.visit_foreign_item(tcx.hir().foreign_item(id)) - } + tcx.hir().deep_visit_item_likes_in_module(module_id, &mut v); }); let errors = errors.into_inner();