Skip to content

Commit fa61c67

Browse files
committed
hir: HirIdify Impl&TraitItemId
1 parent fb22315 commit fa61c67

File tree

12 files changed

+55
-73
lines changed

12 files changed

+55
-73
lines changed

src/librustc/hir/lowering.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -469,8 +469,8 @@ impl<'a> LoweringContext<'a> {
469469

470470
fn visit_trait_item(&mut self, item: &'lcx TraitItem) {
471471
self.lctx.with_hir_id_owner(item.id, |lctx| {
472-
let id = hir::TraitItemId { node_id: item.id };
473472
let hir_item = lctx.lower_trait_item(item);
473+
let id = hir::TraitItemId { hir_id: hir_item.hir_id };
474474
lctx.trait_items.insert(id, hir_item);
475475
lctx.modules.get_mut(&lctx.current_module).unwrap().trait_items.insert(id);
476476
});
@@ -480,8 +480,8 @@ impl<'a> LoweringContext<'a> {
480480

481481
fn visit_impl_item(&mut self, item: &'lcx ImplItem) {
482482
self.lctx.with_hir_id_owner(item.id, |lctx| {
483-
let id = hir::ImplItemId { node_id: item.id };
484483
let hir_item = lctx.lower_impl_item(item);
484+
let id = hir::ImplItemId { hir_id: hir_item.hir_id };
485485
lctx.impl_items.insert(id, hir_item);
486486
lctx.modules.get_mut(&lctx.current_module).unwrap().impl_items.insert(id);
487487
});
@@ -3363,7 +3363,7 @@ impl<'a> LoweringContext<'a> {
33633363
TraitItemKind::Macro(..) => unimplemented!(),
33643364
};
33653365
hir::TraitItemRef {
3366-
id: hir::TraitItemId { node_id: i.id },
3366+
id: hir::TraitItemId { hir_id: self.lower_node_id(i.id).hir_id },
33673367
ident: i.ident,
33683368
span: i.span,
33693369
defaultness: self.lower_defaultness(Defaultness::Default, has_default),
@@ -3427,7 +3427,7 @@ impl<'a> LoweringContext<'a> {
34273427

34283428
fn lower_impl_item_ref(&mut self, i: &ImplItem) -> hir::ImplItemRef {
34293429
hir::ImplItemRef {
3430-
id: hir::ImplItemId { node_id: i.id },
3430+
id: hir::ImplItemId { hir_id: self.lower_node_id(i.id).hir_id },
34313431
ident: i.ident,
34323432
span: i.span,
34333433
vis: self.lower_visibility(&i.vis, Some(i.id)),

src/librustc/hir/map/mod.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -427,15 +427,15 @@ impl<'hir> Map<'hir> {
427427
}
428428

429429
pub fn trait_item(&self, id: TraitItemId) -> &'hir TraitItem {
430-
self.read(id.node_id);
430+
self.read_by_hir_id(id.hir_id);
431431

432432
// N.B., intentionally bypass `self.forest.krate()` so that we
433433
// do not trigger a read of the whole krate here
434434
self.forest.krate.trait_item(id)
435435
}
436436

437437
pub fn impl_item(&self, id: ImplItemId) -> &'hir ImplItem {
438-
self.read(id.node_id);
438+
self.read_by_hir_id(id.hir_id);
439439

440440
// N.B., intentionally bypass `self.forest.krate()` so that we
441441
// do not trigger a read of the whole krate here
@@ -618,11 +618,11 @@ impl<'hir> Map<'hir> {
618618
}
619619

620620
for id in &module.trait_items {
621-
visitor.visit_trait_item(self.expect_trait_item(id.node_id));
621+
visitor.visit_trait_item(self.expect_trait_item_by_hir_id(id.hir_id));
622622
}
623623

624624
for id in &module.impl_items {
625-
visitor.visit_impl_item(self.expect_impl_item(id.node_id));
625+
visitor.visit_impl_item(self.expect_impl_item_by_hir_id(id.hir_id));
626626
}
627627
}
628628

src/librustc/hir/mod.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1657,7 +1657,7 @@ pub struct MethodSig {
16571657
// so it can fetched later.
16581658
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, RustcEncodable, RustcDecodable, Debug)]
16591659
pub struct TraitItemId {
1660-
pub node_id: NodeId,
1660+
pub hir_id: HirId,
16611661
}
16621662

16631663
/// Represents an item declaration within a trait declaration,
@@ -1702,7 +1702,7 @@ pub enum TraitItemKind {
17021702
// so it can fetched later.
17031703
#[derive(Copy, Clone, PartialEq, Eq, PartialOrd, Ord, RustcEncodable, RustcDecodable, Debug)]
17041704
pub struct ImplItemId {
1705-
pub node_id: NodeId,
1705+
pub hir_id: HirId,
17061706
}
17071707

17081708
/// Represents anything within an `impl` block

src/librustc/ich/impls_hir.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -116,11 +116,11 @@ impl<'a> HashStable<StableHashingContext<'a>> for hir::TraitItemId {
116116
hcx: &mut StableHashingContext<'a>,
117117
hasher: &mut StableHasher<W>) {
118118
let hir::TraitItemId {
119-
node_id
119+
hir_id
120120
} = * self;
121121

122122
hcx.with_node_id_hashing_mode(NodeIdHashingMode::HashDefPath, |hcx| {
123-
node_id.hash_stable(hcx, hasher);
123+
hir_id.hash_stable(hcx, hasher);
124124
})
125125
}
126126
}
@@ -130,11 +130,11 @@ impl<'a> HashStable<StableHashingContext<'a>> for hir::ImplItemId {
130130
hcx: &mut StableHashingContext<'a>,
131131
hasher: &mut StableHasher<W>) {
132132
let hir::ImplItemId {
133-
node_id
133+
hir_id
134134
} = * self;
135135

136136
hcx.with_node_id_hashing_mode(NodeIdHashingMode::HashDefPath, |hcx| {
137-
node_id.hash_stable(hcx, hasher);
137+
hir_id.hash_stable(hcx, hasher);
138138
})
139139
}
140140
}

src/librustc/middle/dead.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ impl<'v, 'k, 'tcx> ItemLikeVisitor<'v> for LifeSeeder<'k, 'tcx> {
376376
has_allow_dead_code_or_lang_attr(self.tcx,
377377
impl_item.hir_id,
378378
&impl_item.attrs) {
379-
self.worklist.push(self.tcx.hir().node_to_hir_id(impl_item_ref.id.node_id));
379+
self.worklist.push(impl_item_ref.id.hir_id);
380380
}
381381
}
382382
}

src/librustc/middle/reachable.rs

+1-5
Original file line numberDiff line numberDiff line change
@@ -355,11 +355,7 @@ impl<'a, 'tcx: 'a> ItemLikeVisitor<'tcx> for CollectPrivateImplItemsVisitor<'a,
355355
if let hir::ItemKind::Impl(.., Some(ref trait_ref), _, ref impl_item_refs) = item.node {
356356
let node_id = self.tcx.hir().hir_to_node_id(item.hir_id);
357357
if !self.access_levels.is_reachable(node_id) {
358-
// FIXME(@ljedrz): rework back to a nice extend when item Ids contain HirId
359-
for impl_item_ref in impl_item_refs {
360-
let hir_id = self.tcx.hir().node_to_hir_id(impl_item_ref.id.node_id);
361-
self.worklist.push(hir_id);
362-
}
358+
self.worklist.extend(impl_item_refs.iter().map(|ii_ref| ii_ref.id.hir_id));
363359

364360
let trait_def_id = match trait_ref.path.def {
365361
Def::Trait(def_id) => def_id,

src/librustc/middle/resolve_lifetime.rs

+8-9
Original file line numberDiff line numberDiff line change
@@ -671,13 +671,14 @@ impl<'a, 'tcx> Visitor<'tcx> for LifetimeContext<'a, 'tcx> {
671671
// In the future, this should be fixed and this error should be removed.
672672
let def = self.map.defs.get(&lifetime.hir_id).cloned();
673673
if let Some(Region::LateBound(_, def_id, _)) = def {
674-
if let Some(node_id) = self.tcx.hir().as_local_node_id(def_id) {
674+
if let Some(hir_id) = self.tcx.hir().as_local_hir_id(def_id) {
675675
// Ensure that the parent of the def is an item, not HRTB
676-
let parent_id = self.tcx.hir().get_parent_node(node_id);
677-
let parent_impl_id = hir::ImplItemId { node_id: parent_id };
678-
let parent_trait_id = hir::TraitItemId { node_id: parent_id };
676+
let parent_id = self.tcx.hir().get_parent_node_by_hir_id(hir_id);
677+
let parent_impl_id = hir::ImplItemId { hir_id: parent_id };
678+
let parent_trait_id = hir::TraitItemId { hir_id: parent_id };
679679
let krate = self.tcx.hir().forest.krate();
680-
if !(krate.items.contains_key(&parent_id)
680+
let parent_node_id = self.tcx.hir().hir_to_node_id(parent_id);
681+
if !(krate.items.contains_key(&parent_node_id)
681682
|| krate.impl_items.contains_key(&parent_impl_id)
682683
|| krate.trait_items.contains_key(&parent_trait_id))
683684
{
@@ -2072,10 +2073,9 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
20722073
.expect_item_by_hir_id(self.tcx.hir().get_parent_item(parent))
20732074
.node
20742075
{
2075-
let parent_node_id = self.tcx.hir().hir_to_node_id(parent);
20762076
assoc_item_kind = trait_items
20772077
.iter()
2078-
.find(|ti| ti.id.node_id == parent_node_id)
2078+
.find(|ti| ti.id.hir_id == parent)
20792079
.map(|ti| ti.kind);
20802080
}
20812081
match *m {
@@ -2094,10 +2094,9 @@ impl<'a, 'tcx> LifetimeContext<'a, 'tcx> {
20942094
.node
20952095
{
20962096
impl_self = Some(self_ty);
2097-
let parent_node_id = self.tcx.hir().hir_to_node_id(parent);
20982097
assoc_item_kind = impl_items
20992098
.iter()
2100-
.find(|ii| ii.id.node_id == parent_node_id)
2099+
.find(|ii| ii.id.hir_id == parent)
21012100
.map(|ii| ii.kind);
21022101
}
21032102
Some(body)

src/librustc/ty/mod.rs

+12-16
Original file line numberDiff line numberDiff line change
@@ -2727,7 +2727,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
27272727
parent_vis: &hir::Visibility,
27282728
trait_item_ref: &hir::TraitItemRef)
27292729
-> AssociatedItem {
2730-
let def_id = self.hir().local_def_id(trait_item_ref.id.node_id);
2730+
let def_id = self.hir().local_def_id_from_hir_id(trait_item_ref.id.hir_id);
27312731
let (kind, has_self) = match trait_item_ref.kind {
27322732
hir::AssociatedItemKind::Const => (ty::AssociatedKind::Const, false),
27332733
hir::AssociatedItemKind::Method { has_self } => {
@@ -2737,13 +2737,11 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
27372737
hir::AssociatedItemKind::Existential => bug!("only impls can have existentials"),
27382738
};
27392739

2740-
let hir_id = self.hir().node_to_hir_id(trait_item_ref.id.node_id);
2741-
27422740
AssociatedItem {
27432741
ident: trait_item_ref.ident,
27442742
kind,
27452743
// Visibility of trait items is inherited from their traits.
2746-
vis: Visibility::from_hir(parent_vis, hir_id, self),
2744+
vis: Visibility::from_hir(parent_vis, trait_item_ref.id.hir_id, self),
27472745
defaultness: trait_item_ref.defaultness,
27482746
def_id,
27492747
container: TraitContainer(parent_def_id),
@@ -2755,7 +2753,7 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
27552753
parent_def_id: DefId,
27562754
impl_item_ref: &hir::ImplItemRef)
27572755
-> AssociatedItem {
2758-
let def_id = self.hir().local_def_id(impl_item_ref.id.node_id);
2756+
let def_id = self.hir().local_def_id_from_hir_id(impl_item_ref.id.hir_id);
27592757
let (kind, has_self) = match impl_item_ref.kind {
27602758
hir::AssociatedItemKind::Const => (ty::AssociatedKind::Const, false),
27612759
hir::AssociatedItemKind::Method { has_self } => {
@@ -2765,13 +2763,11 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
27652763
hir::AssociatedItemKind::Existential => (ty::AssociatedKind::Existential, false),
27662764
};
27672765

2768-
let hir_id = self.hir().node_to_hir_id(impl_item_ref.id.node_id);
2769-
27702766
AssociatedItem {
27712767
ident: impl_item_ref.ident,
27722768
kind,
27732769
// Visibility of trait impl items doesn't matter.
2774-
vis: ty::Visibility::from_hir(&impl_item_ref.vis, hir_id, self),
2770+
vis: ty::Visibility::from_hir(&impl_item_ref.vis, impl_item_ref.id.hir_id, self),
27752771
defaultness: impl_item_ref.defaultness,
27762772
def_id,
27772773
container: ImplContainer(parent_def_id),
@@ -3041,13 +3037,13 @@ impl<'a, 'gcx, 'tcx> TyCtxt<'a, 'gcx, 'tcx> {
30413037
}
30423038

30433039
fn associated_item<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> AssociatedItem {
3044-
let id = tcx.hir().as_local_node_id(def_id).unwrap();
3045-
let parent_id = tcx.hir().get_parent(id);
3046-
let parent_def_id = tcx.hir().local_def_id(parent_id);
3047-
let parent_item = tcx.hir().expect_item(parent_id);
3040+
let id = tcx.hir().as_local_hir_id(def_id).unwrap();
3041+
let parent_id = tcx.hir().get_parent_item(id);
3042+
let parent_def_id = tcx.hir().local_def_id_from_hir_id(parent_id);
3043+
let parent_item = tcx.hir().expect_item_by_hir_id(parent_id);
30483044
match parent_item.node {
30493045
hir::ItemKind::Impl(.., ref impl_item_refs) => {
3050-
if let Some(impl_item_ref) = impl_item_refs.iter().find(|i| i.id.node_id == id) {
3046+
if let Some(impl_item_ref) = impl_item_refs.iter().find(|i| i.id.hir_id == id) {
30513047
let assoc_item = tcx.associated_item_from_impl_item_ref(parent_def_id,
30523048
impl_item_ref);
30533049
debug_assert_eq!(assoc_item.def_id, def_id);
@@ -3056,7 +3052,7 @@ fn associated_item<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>, def_id: DefId) -> Asso
30563052
}
30573053

30583054
hir::ItemKind::Trait(.., ref trait_item_refs) => {
3059-
if let Some(trait_item_ref) = trait_item_refs.iter().find(|i| i.id.node_id == id) {
3055+
if let Some(trait_item_ref) = trait_item_refs.iter().find(|i| i.id.hir_id == id) {
30603056
let assoc_item = tcx.associated_item_from_trait_item_ref(parent_def_id,
30613057
&parent_item.vis,
30623058
trait_item_ref);
@@ -3110,13 +3106,13 @@ fn associated_item_def_ids<'a, 'tcx>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
31103106
hir::ItemKind::Trait(.., ref trait_item_refs) => {
31113107
trait_item_refs.iter()
31123108
.map(|trait_item_ref| trait_item_ref.id)
3113-
.map(|id| tcx.hir().local_def_id(id.node_id))
3109+
.map(|id| tcx.hir().local_def_id_from_hir_id(id.hir_id))
31143110
.collect()
31153111
}
31163112
hir::ItemKind::Impl(.., ref impl_item_refs) => {
31173113
impl_item_refs.iter()
31183114
.map(|impl_item_ref| impl_item_ref.id)
3119-
.map(|id| tcx.hir().local_def_id(id.node_id))
3115+
.map(|id| tcx.hir().local_def_id_from_hir_id(id.hir_id))
31203116
.collect()
31213117
}
31223118
hir::ItemKind::TraitAlias(..) => vec![],

src/librustc_lint/builtin.rs

+2-5
Original file line numberDiff line numberDiff line change
@@ -447,8 +447,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDoc {
447447
if let hir::VisibilityKind::Inherited = it.vis.node {
448448
self.private_traits.insert(it.hir_id);
449449
for trait_item_ref in trait_item_refs {
450-
let hir_id = cx.tcx.hir().node_to_hir_id(trait_item_ref.id.node_id);
451-
self.private_traits.insert(hir_id);
450+
self.private_traits.insert(trait_item_ref.id.hir_id);
452451
}
453452
return;
454453
}
@@ -464,9 +463,7 @@ impl<'a, 'tcx> LateLintPass<'a, 'tcx> for MissingDoc {
464463
Some(Node::Item(item)) => {
465464
if let hir::VisibilityKind::Inherited = item.vis.node {
466465
for impl_item_ref in impl_item_refs {
467-
let hir_id = cx.tcx.hir().node_to_hir_id(
468-
impl_item_ref.id.node_id);
469-
self.private_traits.insert(hir_id);
466+
self.private_traits.insert(impl_item_ref.id.hir_id);
470467
}
471468
}
472469
}

0 commit comments

Comments
 (0)