Rollup merge of #62975 - ljedrz:kill_off_hir_to_node_id, r=Zoxc

Almost fully deprecate hir::map::Map.hir_to_node_id

- HirIdify `doctree::Module.id`
- HirIdify `hir::Crate.modules`
- introduce a `HirId` to `DefIndex` map in `map::Definitions`

The only last uses of `hir::map::Map.hir_to_node_id` in the compiler are:
- for the purposes of `driver::pretty` (in `map::nodes_matching_suffix`), but I don't know if we can remove `NodeId`s in there (I think when I attempted it previously there was some issue due to `HirId` not being representable with an integer)
- in `ty::query::on_disk_cache` (not sure about the purpose of this one)
- in `mir::transform::check_unsafety` (only important for error message order)

Any suggestions how to kill these off?

r? @Zoxc
This commit is contained in:
Mazdak Farrokhzad 2019-09-25 16:26:14 +02:00 committed by GitHub
commit c26f1296d2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
9 changed files with 22 additions and 21 deletions

View File

@ -97,7 +97,7 @@ pub struct LoweringContext<'a> {
trait_impls: BTreeMap<DefId, Vec<hir::HirId>>, trait_impls: BTreeMap<DefId, Vec<hir::HirId>>,
modules: BTreeMap<NodeId, hir::ModuleItems>, modules: BTreeMap<hir::HirId, hir::ModuleItems>,
generator_kind: Option<hir::GeneratorKind>, generator_kind: Option<hir::GeneratorKind>,
@ -141,7 +141,7 @@ pub struct LoweringContext<'a> {
/// vector. /// vector.
in_scope_lifetimes: Vec<ParamName>, in_scope_lifetimes: Vec<ParamName>,
current_module: NodeId, current_module: hir::HirId,
type_def_lifetime_params: DefIdMap<usize>, type_def_lifetime_params: DefIdMap<usize>,
@ -262,7 +262,7 @@ pub fn lower_crate(
is_in_dyn_type: false, is_in_dyn_type: false,
anonymous_lifetime_mode: AnonymousLifetimeMode::PassThrough, anonymous_lifetime_mode: AnonymousLifetimeMode::PassThrough,
type_def_lifetime_params: Default::default(), type_def_lifetime_params: Default::default(),
current_module: CRATE_NODE_ID, current_module: hir::CRATE_HIR_ID,
current_hir_id_owner: vec![(CRATE_DEF_INDEX, 0)], current_hir_id_owner: vec![(CRATE_DEF_INDEX, 0)],
item_local_id_counters: Default::default(), item_local_id_counters: Default::default(),
node_id_to_hir_id: IndexVec::new(), node_id_to_hir_id: IndexVec::new(),

View File

@ -45,14 +45,16 @@ impl<'tcx, 'interner> ItemLowerer<'tcx, 'interner> {
impl<'tcx, 'interner> Visitor<'tcx> for ItemLowerer<'tcx, 'interner> { impl<'tcx, 'interner> Visitor<'tcx> for ItemLowerer<'tcx, 'interner> {
fn visit_mod(&mut self, m: &'tcx Mod, _s: Span, _attrs: &[Attribute], n: NodeId) { fn visit_mod(&mut self, m: &'tcx Mod, _s: Span, _attrs: &[Attribute], n: NodeId) {
self.lctx.modules.insert(n, hir::ModuleItems { let hir_id = self.lctx.lower_node_id(n);
self.lctx.modules.insert(hir_id, hir::ModuleItems {
items: BTreeSet::new(), items: BTreeSet::new(),
trait_items: BTreeSet::new(), trait_items: BTreeSet::new(),
impl_items: BTreeSet::new(), impl_items: BTreeSet::new(),
}); });
let old = self.lctx.current_module; let old = self.lctx.current_module;
self.lctx.current_module = n; self.lctx.current_module = hir_id;
visit::walk_mod(self, m); visit::walk_mod(self, m);
self.lctx.current_module = old; self.lctx.current_module = old;
} }

View File

@ -10,7 +10,7 @@ pub fn check_crate(hir_map: &hir::map::Map<'_>) {
let errors = Lock::new(Vec::new()); let errors = Lock::new(Vec::new());
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_from_node_id(*module_id); let local_def_id = hir_map.local_def_id(*module_id);
hir_map.visit_item_likes_in_module(local_def_id, &mut OuterVisitor { hir_map.visit_item_likes_in_module(local_def_id, &mut OuterVisitor {
hir_map, hir_map,
errors: &errors, errors: &errors,

View File

@ -536,9 +536,7 @@ impl<'hir> Map<'hir> {
// in the expect_* calls the loops below // in the expect_* calls the loops below
self.read(hir_id); self.read(hir_id);
let node_id = self.hir_to_node_id[&hir_id]; let module = &self.forest.krate.modules[&hir_id];
let module = &self.forest.krate.modules[&node_id];
for id in &module.items { for id in &module.items {
visitor.visit_item(self.expect_item(*id)); visitor.visit_item(self.expect_item(*id));

View File

@ -766,7 +766,7 @@ pub struct Crate {
/// A list of modules written out in the order in which they /// A list of modules written out in the order in which they
/// appear in the crate. This includes the main crate module. /// appear in the crate. This includes the main crate module.
pub modules: BTreeMap<NodeId, ModuleItems>, pub modules: BTreeMap<HirId, ModuleItems>,
} }
impl Crate { impl Crate {

View File

@ -1510,7 +1510,7 @@ pub fn check_crate<'tcx, T: for<'a> LateLintPass<'a, 'tcx>>(
time(tcx.sess, "module lints", || { time(tcx.sess, "module lints", || {
// Run per-module lints // Run per-module lints
par_iter(&tcx.hir().krate().modules).for_each(|(&module, _)| { par_iter(&tcx.hir().krate().modules).for_each(|(&module, _)| {
tcx.ensure().lint_mod(tcx.hir().local_def_id_from_node_id(module)); tcx.ensure().lint_mod(tcx.hir().local_def_id(module));
}); });
}); });
}); });

View File

@ -905,10 +905,10 @@ fn analysis(tcx: TyCtxt<'_>, cnum: CrateNum) -> Result<()> {
}); });
}, { }, {
par_iter(&tcx.hir().krate().modules).for_each(|(&module, _)| { par_iter(&tcx.hir().krate().modules).for_each(|(&module, _)| {
tcx.ensure().check_mod_loops(tcx.hir().local_def_id_from_node_id(module)); let local_def_id = tcx.hir().local_def_id(module);
tcx.ensure().check_mod_attrs(tcx.hir().local_def_id_from_node_id(module)); tcx.ensure().check_mod_loops(local_def_id);
tcx.ensure().check_mod_unstable_api_usage( tcx.ensure().check_mod_attrs(local_def_id);
tcx.hir().local_def_id_from_node_id(module)); tcx.ensure().check_mod_unstable_api_usage(local_def_id);
}); });
}); });
}); });
@ -931,9 +931,10 @@ fn analysis(tcx: TyCtxt<'_>, cnum: CrateNum) -> Result<()> {
// "not all control paths return a value" is reported here. // "not all control paths return a value" is reported here.
// //
// maybe move the check to a MIR pass? // maybe move the check to a MIR pass?
tcx.ensure().check_mod_liveness(tcx.hir().local_def_id_from_node_id(module)); let local_def_id = tcx.hir().local_def_id(module);
tcx.ensure().check_mod_intrinsics(tcx.hir().local_def_id_from_node_id(module)); tcx.ensure().check_mod_liveness(local_def_id);
tcx.ensure().check_mod_intrinsics(local_def_id);
}); });
}); });
}); });
@ -993,7 +994,7 @@ fn analysis(tcx: TyCtxt<'_>, cnum: CrateNum) -> Result<()> {
}, { }, {
time(sess, "privacy checking modules", || { time(sess, "privacy checking modules", || {
par_iter(&tcx.hir().krate().modules).for_each(|(&module, _)| { par_iter(&tcx.hir().krate().modules).for_each(|(&module, _)| {
tcx.ensure().check_mod_privacy(tcx.hir().local_def_id_from_node_id(module)); tcx.ensure().check_mod_privacy(tcx.hir().local_def_id(module));
}); });
}); });
}); });

View File

@ -54,7 +54,7 @@ pub fn impl_wf_check(tcx: TyCtxt<'_>) {
// but it's one that we must perform earlier than the rest of // but it's one that we must perform earlier than the rest of
// WfCheck. // WfCheck.
for &module in tcx.hir().krate().modules.keys() { for &module in tcx.hir().krate().modules.keys() {
tcx.ensure().check_mod_impl_wf(tcx.hir().local_def_id_from_node_id(module)); tcx.ensure().check_mod_impl_wf(tcx.hir().local_def_id(module));
} }
} }

View File

@ -303,7 +303,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) -> Result<(), ErrorReported> {
tcx.sess.track_errors(|| { tcx.sess.track_errors(|| {
time(tcx.sess, "type collecting", || { time(tcx.sess, "type collecting", || {
for &module in tcx.hir().krate().modules.keys() { for &module in tcx.hir().krate().modules.keys() {
tcx.ensure().collect_mod_item_types(tcx.hir().local_def_id_from_node_id(module)); tcx.ensure().collect_mod_item_types(tcx.hir().local_def_id(module));
} }
}); });
})?; })?;
@ -338,7 +338,7 @@ pub fn check_crate(tcx: TyCtxt<'_>) -> Result<(), ErrorReported> {
time(tcx.sess, "item-types checking", || { time(tcx.sess, "item-types checking", || {
for &module in tcx.hir().krate().modules.keys() { for &module in tcx.hir().krate().modules.keys() {
tcx.ensure().check_mod_item_types(tcx.hir().local_def_id_from_node_id(module)); tcx.ensure().check_mod_item_types(tcx.hir().local_def_id(module));
} }
}); });