change back to using tcx.hir() visit-item method

Signed-off-by: Miguel Guarniz <mi9uel9@gmail.com>
This commit is contained in:
Miguel Guarniz 2022-05-07 17:11:15 -04:00
parent f975d05116
commit 2e98879403
2 changed files with 8 additions and 47 deletions

View File

@ -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));

View File

@ -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();