@@ -82,7 +82,7 @@ pub struct LoweringContext<'a> {
82
82
resolver : & ' a mut dyn Resolver ,
83
83
84
84
/// The items being lowered are collected here.
85
- items : BTreeMap < NodeId , hir:: Item > ,
85
+ items : BTreeMap < hir :: HirId , hir:: Item > ,
86
86
87
87
trait_items : BTreeMap < hir:: TraitItemId , hir:: TraitItem > ,
88
88
impl_items : BTreeMap < hir:: ImplItemId , hir:: ImplItem > ,
@@ -321,7 +321,7 @@ enum AnonymousLifetimeMode {
321
321
PassThrough ,
322
322
}
323
323
324
- struct ImplTraitTypeIdVisitor < ' a > { ids : & ' a mut SmallVec < [ hir :: ItemId ; 1 ] > }
324
+ struct ImplTraitTypeIdVisitor < ' a > { ids : & ' a mut SmallVec < [ NodeId ; 1 ] > }
325
325
326
326
impl < ' a , ' b > Visitor < ' a > for ImplTraitTypeIdVisitor < ' b > {
327
327
fn visit_ty ( & mut self , ty : & ' a Ty ) {
@@ -330,7 +330,7 @@ impl<'a, 'b> Visitor<'a> for ImplTraitTypeIdVisitor<'b> {
330
330
| TyKind :: BareFn ( _)
331
331
=> return ,
332
332
333
- TyKind :: ImplTrait ( id, _) => self . ids . push ( hir :: ItemId { id } ) ,
333
+ TyKind :: ImplTrait ( id, _) => self . ids . push ( id ) ,
334
334
_ => { } ,
335
335
}
336
336
visit:: walk_ty ( self , ty) ;
@@ -434,17 +434,16 @@ impl<'a> LoweringContext<'a> {
434
434
}
435
435
436
436
fn visit_item ( & mut self , item : & ' lcx Item ) {
437
- let mut item_lowered = true ;
437
+ let mut item_hir_id = None ;
438
438
self . lctx . with_hir_id_owner ( item. id , |lctx| {
439
439
if let Some ( hir_item) = lctx. lower_item ( item) {
440
- lctx. insert_item ( item. id , hir_item) ;
441
- } else {
442
- item_lowered = false ;
440
+ item_hir_id = Some ( hir_item. hir_id ) ;
441
+ lctx. insert_item ( hir_item) ;
443
442
}
444
443
} ) ;
445
444
446
- if item_lowered {
447
- let item_generics = match self . lctx . items . get ( & item . id ) . unwrap ( ) . node {
445
+ if let Some ( hir_id ) = item_hir_id {
446
+ let item_generics = match self . lctx . items . get ( & hir_id ) . unwrap ( ) . node {
448
447
hir:: ItemKind :: Impl ( _, _, _, ref generics, ..)
449
448
| hir:: ItemKind :: Trait ( _, _, ref generics, ..) => {
450
449
generics. params . clone ( )
@@ -516,7 +515,8 @@ impl<'a> LoweringContext<'a> {
516
515
}
517
516
}
518
517
519
- fn insert_item ( & mut self , id : NodeId , item : hir:: Item ) {
518
+ fn insert_item ( & mut self , item : hir:: Item ) {
519
+ let id = item. hir_id ;
520
520
self . items . insert ( id, item) ;
521
521
self . modules . get_mut ( & self . current_module ) . unwrap ( ) . items . insert ( id) ;
522
522
}
@@ -1422,10 +1422,10 @@ impl<'a> LoweringContext<'a> {
1422
1422
// Insert the item into the global list. This usually happens
1423
1423
// automatically for all AST items. But this existential type item
1424
1424
// does not actually exist in the AST.
1425
- lctx. insert_item ( exist_ty_id . node_id , exist_ty_item) ;
1425
+ lctx. insert_item ( exist_ty_item) ;
1426
1426
1427
1427
// `impl Trait` now just becomes `Foo<'a, 'b, ..>`.
1428
- hir:: TyKind :: Def ( hir:: ItemId { id : exist_ty_id. node_id } , lifetimes)
1428
+ hir:: TyKind :: Def ( hir:: ItemId { id : exist_ty_id. hir_id } , lifetimes)
1429
1429
} )
1430
1430
}
1431
1431
@@ -2002,9 +2002,9 @@ impl<'a> LoweringContext<'a> {
2002
2002
)
2003
2003
}
2004
2004
2005
- fn lower_local ( & mut self , l : & Local ) -> ( hir:: Local , SmallVec < [ hir :: ItemId ; 1 ] > ) {
2005
+ fn lower_local ( & mut self , l : & Local ) -> ( hir:: Local , SmallVec < [ NodeId ; 1 ] > ) {
2006
2006
let LoweredNodeId { node_id : _, hir_id } = self . lower_node_id ( l. id ) ;
2007
- let mut ids = SmallVec :: < [ hir :: ItemId ; 1 ] > :: new ( ) ;
2007
+ let mut ids = SmallVec :: < [ NodeId ; 1 ] > :: new ( ) ;
2008
2008
if self . sess . features_untracked ( ) . impl_trait_in_bindings {
2009
2009
if let Some ( ref ty) = l. ty {
2010
2010
let mut visitor = ImplTraitTypeIdVisitor { ids : & mut ids } ;
@@ -3114,7 +3114,6 @@ impl<'a> LoweringContext<'a> {
3114
3114
let vis = respan ( vis. span , vis_kind) ;
3115
3115
3116
3116
this. insert_item (
3117
- new_id. node_id ,
3118
3117
hir:: Item {
3119
3118
hir_id : new_id. hir_id ,
3120
3119
ident,
@@ -3219,7 +3218,6 @@ impl<'a> LoweringContext<'a> {
3219
3218
let vis = respan ( vis. span , vis_kind) ;
3220
3219
3221
3220
this. insert_item (
3222
- new_id,
3223
3221
hir:: Item {
3224
3222
hir_id : new_hir_id,
3225
3223
ident,
@@ -3443,43 +3441,47 @@ impl<'a> LoweringContext<'a> {
3443
3441
}
3444
3442
3445
3443
fn lower_item_id ( & mut self , i : & Item ) -> SmallVec < [ hir:: ItemId ; 1 ] > {
3446
- match i. node {
3444
+ let node_ids = match i. node {
3447
3445
ItemKind :: Use ( ref use_tree) => {
3448
- let mut vec = smallvec ! [ hir :: ItemId { id : i. id } ] ;
3446
+ let mut vec = smallvec ! [ i. id] ;
3449
3447
self . lower_item_id_use_tree ( use_tree, i. id , & mut vec) ;
3450
3448
vec
3451
3449
}
3452
3450
ItemKind :: MacroDef ( ..) => SmallVec :: new ( ) ,
3453
3451
ItemKind :: Fn ( ..) |
3454
- ItemKind :: Impl ( .., None , _, _) => smallvec ! [ hir :: ItemId { id : i. id } ] ,
3452
+ ItemKind :: Impl ( .., None , _, _) => smallvec ! [ i. id] ,
3455
3453
ItemKind :: Static ( ref ty, ..) => {
3456
- let mut ids = smallvec ! [ hir :: ItemId { id : i. id } ] ;
3454
+ let mut ids = smallvec ! [ i. id] ;
3457
3455
if self . sess . features_untracked ( ) . impl_trait_in_bindings {
3458
3456
let mut visitor = ImplTraitTypeIdVisitor { ids : & mut ids } ;
3459
3457
visitor. visit_ty ( ty) ;
3460
3458
}
3461
3459
ids
3462
3460
} ,
3463
3461
ItemKind :: Const ( ref ty, ..) => {
3464
- let mut ids = smallvec ! [ hir :: ItemId { id : i. id } ] ;
3462
+ let mut ids = smallvec ! [ i. id] ;
3465
3463
if self . sess . features_untracked ( ) . impl_trait_in_bindings {
3466
3464
let mut visitor = ImplTraitTypeIdVisitor { ids : & mut ids } ;
3467
3465
visitor. visit_ty ( ty) ;
3468
3466
}
3469
3467
ids
3470
3468
} ,
3471
- _ => smallvec ! [ hir:: ItemId { id: i. id } ] ,
3472
- }
3469
+ _ => smallvec ! [ i. id] ,
3470
+ } ;
3471
+
3472
+ node_ids. into_iter ( )
3473
+ . map ( |node_id| hir:: ItemId { id : self . lower_node_id ( node_id) . hir_id } )
3474
+ . collect ( )
3473
3475
}
3474
3476
3475
3477
fn lower_item_id_use_tree ( & mut self ,
3476
3478
tree : & UseTree ,
3477
3479
base_id : NodeId ,
3478
- vec : & mut SmallVec < [ hir :: ItemId ; 1 ] > )
3480
+ vec : & mut SmallVec < [ NodeId ; 1 ] > )
3479
3481
{
3480
3482
match tree. kind {
3481
3483
UseTreeKind :: Nested ( ref nested_vec) => for & ( ref nested, id) in nested_vec {
3482
- vec. push ( hir :: ItemId { id } ) ;
3484
+ vec. push ( id ) ;
3483
3485
self . lower_item_id_use_tree ( nested, id, vec) ;
3484
3486
} ,
3485
3487
UseTreeKind :: Glob => { }
@@ -3488,7 +3490,7 @@ impl<'a> LoweringContext<'a> {
3488
3490
. skip ( 1 )
3489
3491
. zip ( [ id1, id2] . iter ( ) )
3490
3492
{
3491
- vec. push ( hir :: ItemId { id } ) ;
3493
+ vec. push ( id ) ;
3492
3494
}
3493
3495
} ,
3494
3496
}
@@ -4604,6 +4606,7 @@ impl<'a> LoweringContext<'a> {
4604
4606
let mut ids: SmallVec <[ hir:: Stmt ; 1 ] > = item_ids
4605
4607
. into_iter( )
4606
4608
. map( |item_id| {
4609
+ let item_id = hir:: ItemId { id: self . lower_node_id( item_id) . hir_id } ;
4607
4610
let LoweredNodeId { node_id: _, hir_id } = self . next_id( ) ;
4608
4611
4609
4612
hir:: Stmt {
0 commit comments