Skip to content

Commit f1a113e

Browse files
committed
rustc: use LocalDefId instead of DefIndex in hir::map::definitions.
1 parent 97026fe commit f1a113e

File tree

14 files changed

+113
-108
lines changed

14 files changed

+113
-108
lines changed

src/librustc/hir/lowering.rs

+6-7
Original file line numberDiff line numberDiff line change
@@ -405,7 +405,7 @@ impl<'a> LoweringContext<'a> {
405405
UseTreeKind::Simple(_, id1, id2) => {
406406
for &id in &[id1, id2] {
407407
self.lctx.resolver.definitions().create_def_with_parent(
408-
owner.index,
408+
owner,
409409
id,
410410
DefPathData::Misc,
411411
ExpnId::root(),
@@ -673,8 +673,7 @@ impl<'a> LoweringContext<'a> {
673673
.definitions()
674674
.opt_local_def_id(owner)
675675
.expect("you forgot to call `create_def_with_parent` or are lowering node-IDs \
676-
that do not belong to the current owner")
677-
.assert_local();
676+
that do not belong to the current owner");
678677

679678
hir::HirId {
680679
owner,
@@ -815,7 +814,7 @@ impl<'a> LoweringContext<'a> {
815814

816815
// Add a definition for the in-band lifetime def.
817816
self.resolver.definitions().create_def_with_parent(
818-
parent_def_id.index,
817+
parent_def_id,
819818
node_id,
820819
DefPathData::LifetimeNs(str_name),
821820
ExpnId::root(),
@@ -986,7 +985,7 @@ impl<'a> LoweringContext<'a> {
986985

987986
fn def_key(&mut self, id: DefId) -> DefKey {
988987
if let Some(id) = id.as_local() {
989-
self.resolver.definitions().def_key(id.index)
988+
self.resolver.definitions().def_key(id)
990989
} else {
991990
self.resolver.cstore().def_key(id)
992991
}
@@ -1115,7 +1114,7 @@ impl<'a> LoweringContext<'a> {
11151114
let impl_trait_node_id = self.sess.next_node_id();
11161115
let parent_def_id = self.current_hir_id_owner.last().unwrap().0;
11171116
self.resolver.definitions().create_def_with_parent(
1118-
parent_def_id.index,
1117+
parent_def_id,
11191118
impl_trait_node_id,
11201119
DefPathData::ImplTrait,
11211120
ExpnId::root(),
@@ -1596,7 +1595,7 @@ impl<'a> LoweringContext<'a> {
15961595
let hir_id =
15971596
self.context.lower_node_id_with_owner(def_node_id, self.opaque_ty_id);
15981597
self.context.resolver.definitions().create_def_with_parent(
1599-
self.parent.index,
1598+
self.parent,
16001599
def_node_id,
16011600
DefPathData::LifetimeNs(name.ident().name),
16021601
ExpnId::root(),

src/librustc/hir/map/collector.rs

+21-13
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,9 @@ impl<'a, 'hir> NodeCollector<'a, 'hir> {
105105
hir_to_node_id: &'a FxHashMap<HirId, NodeId>,
106106
mut hcx: StableHashingContext<'a>)
107107
-> NodeCollector<'a, 'hir> {
108-
let root_mod_def_path_hash = definitions.def_path_hash(CRATE_DEF_INDEX);
108+
let root_mod_def_path_hash = definitions.def_path_hash(LocalDefId {
109+
index: CRATE_DEF_INDEX,
110+
});
109111

110112
let mut hir_body_nodes = Vec::new();
111113

@@ -254,9 +256,9 @@ impl<'a, 'hir> NodeCollector<'a, 'hir> {
254256
assert_eq!(self.definitions.node_to_hir_id(node_id), hir_id);
255257

256258
if hir_id.owner != self.current_dep_node_owner {
257-
let node_str = match self.definitions.opt_def_index(node_id) {
258-
Some(def_index) => {
259-
self.definitions.def_path(def_index).to_string_no_crate()
259+
let node_str = match self.definitions.opt_local_def_id(node_id) {
260+
Some(def_id) => {
261+
self.definitions.def_path(def_id).to_string_no_crate()
260262
}
261263
None => format!("{:?}", node)
262264
};
@@ -274,10 +276,10 @@ impl<'a, 'hir> NodeCollector<'a, 'hir> {
274276
self.source_map.span_to_string(span),
275277
node_str,
276278
self.definitions
277-
.def_path(self.current_dep_node_owner.index)
279+
.def_path(self.current_dep_node_owner)
278280
.to_string_no_crate(),
279281
self.current_dep_node_owner,
280-
self.definitions.def_path(hir_id.owner.index).to_string_no_crate(),
282+
self.definitions.def_path(hir_id.owner).to_string_no_crate(),
281283
hir_id.owner,
282284
forgot_str,
283285
)
@@ -308,7 +310,7 @@ impl<'a, 'hir> NodeCollector<'a, 'hir> {
308310
let prev_full_dep_index = self.current_full_dep_index;
309311
let prev_in_body = self.currently_in_body;
310312

311-
let def_path_hash = self.definitions.def_path_hash(dep_node_owner.index);
313+
let def_path_hash = self.definitions.def_path_hash(dep_node_owner);
312314

313315
let (signature_dep_index, full_dep_index) = alloc_hir_dep_nodes(
314316
self.dep_graph,
@@ -369,8 +371,10 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
369371

370372
fn visit_item(&mut self, i: &'hir Item) {
371373
debug!("visit_item: {:?}", i);
372-
debug_assert_eq!(i.hir_id.owner.index,
373-
self.definitions.opt_def_index(self.hir_to_node_id[&i.hir_id]).unwrap());
374+
debug_assert_eq!(
375+
i.hir_id.owner,
376+
self.definitions.opt_local_def_id(self.hir_to_node_id[&i.hir_id]).unwrap(),
377+
);
374378
self.with_dep_node_owner(i.hir_id.owner, i, |this| {
375379
this.insert(i.span, i.hir_id, Node::Item(i));
376380
this.with_parent(i.hir_id, |this| {
@@ -399,8 +403,10 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
399403
}
400404

401405
fn visit_trait_item(&mut self, ti: &'hir TraitItem) {
402-
debug_assert_eq!(ti.hir_id.owner.index,
403-
self.definitions.opt_def_index(self.hir_to_node_id[&ti.hir_id]).unwrap());
406+
debug_assert_eq!(
407+
ti.hir_id.owner,
408+
self.definitions.opt_local_def_id(self.hir_to_node_id[&ti.hir_id]).unwrap(),
409+
);
404410
self.with_dep_node_owner(ti.hir_id.owner, ti, |this| {
405411
this.insert(ti.span, ti.hir_id, Node::TraitItem(ti));
406412

@@ -411,8 +417,10 @@ impl<'a, 'hir> Visitor<'hir> for NodeCollector<'a, 'hir> {
411417
}
412418

413419
fn visit_impl_item(&mut self, ii: &'hir ImplItem) {
414-
debug_assert_eq!(ii.hir_id.owner.index,
415-
self.definitions.opt_def_index(self.hir_to_node_id[&ii.hir_id]).unwrap());
420+
debug_assert_eq!(
421+
ii.hir_id.owner,
422+
self.definitions.opt_local_def_id(self.hir_to_node_id[&ii.hir_id]).unwrap(),
423+
);
416424
self.with_dep_node_owner(ii.hir_id.owner, ii, |this| {
417425
this.insert(ii.span, ii.hir_id, Node::ImplItem(ii));
418426

src/librustc/hir/map/def_collector.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use crate::hir::map::definitions::*;
2-
use crate::hir::def_id::DefIndex;
2+
use crate::hir::def_id::LocalDefId;
33

44
use syntax::ast::*;
55
use syntax::visit;
@@ -11,7 +11,7 @@ use syntax_pos::Span;
1111
/// Creates `DefId`s for nodes in the AST.
1212
pub struct DefCollector<'a> {
1313
definitions: &'a mut Definitions,
14-
parent_def: DefIndex,
14+
parent_def: LocalDefId,
1515
expansion: ExpnId,
1616
}
1717

@@ -25,13 +25,13 @@ impl<'a> DefCollector<'a> {
2525
node_id: NodeId,
2626
data: DefPathData,
2727
span: Span)
28-
-> DefIndex {
28+
-> LocalDefId {
2929
let parent_def = self.parent_def;
3030
debug!("create_def(node_id={:?}, data={:?}, parent_def={:?})", node_id, data, parent_def);
3131
self.definitions.create_def_with_parent(parent_def, node_id, data, self.expansion, span)
3232
}
3333

34-
fn with_parent<F: FnOnce(&mut Self)>(&mut self, parent_def: DefIndex, f: F) {
34+
fn with_parent<F: FnOnce(&mut Self)>(&mut self, parent_def: LocalDefId, f: F) {
3535
let orig_parent_def = std::mem::replace(&mut self.parent_def, parent_def);
3636
f(self);
3737
self.parent_def = orig_parent_def;

0 commit comments

Comments
 (0)