]> git.lizzy.rs Git - rust.git/commitdiff
Fix HIR map validation
authorJohn Kåre Alsaker <john.kare.alsaker@gmail.com>
Sun, 9 Feb 2020 16:11:02 +0000 (17:11 +0100)
committerJohn Kåre Alsaker <john.kare.alsaker@gmail.com>
Sat, 14 Mar 2020 21:52:30 +0000 (22:52 +0100)
src/librustc/hir/map/hir_id_validator.rs
src/librustc/hir/map/mod.rs
src/librustc_interface/passes.rs

index 281056684a185813c0b4f516f961ad12cafdfeb1..c4c23c1a75445000b2284a1aa8cc898d09db059d 100644 (file)
@@ -1,18 +1,20 @@
+use crate::hir::map::Map;
 use crate::ty::TyCtxt;
-/*use rustc_data_structures::fx::FxHashSet;
+use rustc_data_structures::fx::FxHashSet;
 use rustc_data_structures::sync::{par_iter, Lock, ParallelIterator};
 use rustc_hir as hir;
 use rustc_hir::def_id::{DefId, DefIndex, CRATE_DEF_INDEX};
 use rustc_hir::intravisit;
 use rustc_hir::itemlikevisit::ItemLikeVisitor;
-use rustc_hir::{HirId, ItemLocalId};*/
+use rustc_hir::{HirId, ItemLocalId};
 
-pub fn check_crate(_tcx: TyCtxt<'_>) {
-    /*tcx.dep_graph.assert_ignored();
+pub fn check_crate(tcx: TyCtxt<'_>) {
+    tcx.dep_graph.assert_ignored();
 
     let errors = Lock::new(Vec::new());
+    let hir_map = tcx.hir();
 
-    par_iter(&hir_map.krate.modules).for_each(|(module_id, _)| {
+    par_iter(&hir_map.krate().modules).for_each(|(module_id, _)| {
         let local_def_id = hir_map.local_def_id(*module_id);
         hir_map.visit_item_likes_in_module(
             local_def_id,
@@ -25,23 +27,23 @@ pub fn check_crate(_tcx: TyCtxt<'_>) {
     if !errors.is_empty() {
         let message = errors.iter().fold(String::new(), |s1, s2| s1 + "\n" + s2);
         tcx.sess.delay_span_bug(rustc_span::DUMMY_SP, &message);
-    }*/
+    }
 }
-/*
+
 struct HirIdValidator<'a, 'hir> {
-    hir_map: &'a EarlyMap<'hir>,
+    hir_map: Map<'hir>,
     owner_def_index: Option<DefIndex>,
     hir_ids_seen: FxHashSet<ItemLocalId>,
     errors: &'a Lock<Vec<String>>,
 }
 
 struct OuterVisitor<'a, 'hir> {
-    hir_map: &'a EarlyMap<'hir>,
+    hir_map: Map<'hir>,
     errors: &'a Lock<Vec<String>>,
 }
 
 impl<'a, 'hir> OuterVisitor<'a, 'hir> {
-    fn new_inner_visitor(&self, hir_map: &'a EarlyMap<'hir>) -> HirIdValidator<'a, 'hir> {
+    fn new_inner_visitor(&self, hir_map: Map<'hir>) -> HirIdValidator<'a, 'hir> {
         HirIdValidator {
             hir_map,
             owner_def_index: None,
@@ -133,7 +135,7 @@ fn check<F: FnOnce(&mut HirIdValidator<'a, 'hir>)>(&mut self, hir_id: HirId, wal
 }
 
 impl<'a, 'hir> intravisit::Visitor<'hir> for HirIdValidator<'a, 'hir> {
-    type Map = EarlyMap<'hir>;
+    type Map = Map<'hir>;
 
     fn nested_visit_map(&mut self) -> intravisit::NestedVisitorMap<Self::Map> {
         intravisit::NestedVisitorMap::OnlyBodies(self.hir_map)
@@ -173,4 +175,3 @@ fn visit_impl_item_ref(&mut self, _: &'hir hir::ImplItemRef<'hir>) {
         // different owner.
     }
 }
-*/
index d3aff7c963fab85ae9e6553288887fc975445ceb..8b13f008a89d0b90a17406f675416e1777e22c9a 100644 (file)
@@ -25,6 +25,7 @@
 mod collector;
 pub mod definitions;
 mod hir_id_validator;
+pub use hir_id_validator::check_crate;
 
 /// Represents an entry and its parent `HirId`.
 #[derive(Copy, Clone, Debug)]
index a250fcc217a477d6e9bc4852ebb92ef53260dd74..4fe7a06e5609ed4e014c85ec83a9239c5554cd9c 100644 (file)
@@ -762,6 +762,8 @@ pub fn create_global_ctxt<'tcx>(
 fn analysis(tcx: TyCtxt<'_>, cnum: CrateNum) -> Result<()> {
     assert_eq!(cnum, LOCAL_CRATE);
 
+    rustc::hir::map::check_crate(tcx);
+
     let sess = tcx.sess;
     let mut entry_point = None;