@@ -82,7 +82,7 @@ pub struct LoweringContext<'a> {
8282 resolver : & ' a mut dyn Resolver ,
8383
8484 /// The items being lowered are collected here.
85- items : BTreeMap < NodeId , hir:: Item > ,
85+ items : BTreeMap < hir :: HirId , hir:: Item > ,
8686
8787 trait_items : BTreeMap < hir:: TraitItemId , hir:: TraitItem > ,
8888 impl_items : BTreeMap < hir:: ImplItemId , hir:: ImplItem > ,
@@ -321,7 +321,7 @@ enum AnonymousLifetimeMode {
321321 PassThrough ,
322322}
323323
324- struct ImplTraitTypeIdVisitor < ' a > { ids : & ' a mut SmallVec < [ hir :: ItemId ; 1 ] > }
324+ struct ImplTraitTypeIdVisitor < ' a > { ids : & ' a mut SmallVec < [ NodeId ; 1 ] > }
325325
326326impl < ' a , ' b > Visitor < ' a > for ImplTraitTypeIdVisitor < ' b > {
327327 fn visit_ty ( & mut self , ty : & ' a Ty ) {
@@ -330,7 +330,7 @@ impl<'a, 'b> Visitor<'a> for ImplTraitTypeIdVisitor<'b> {
330330 | TyKind :: BareFn ( _)
331331 => return ,
332332
333- TyKind :: ImplTrait ( id, _) => self . ids . push ( hir :: ItemId { id } ) ,
333+ TyKind :: ImplTrait ( id, _) => self . ids . push ( id ) ,
334334 _ => { } ,
335335 }
336336 visit:: walk_ty ( self , ty) ;
@@ -434,17 +434,16 @@ impl<'a> LoweringContext<'a> {
434434 }
435435
436436 fn visit_item ( & mut self , item : & ' lcx Item ) {
437- let mut item_lowered = true ;
437+ let mut item_hir_id = None ;
438438 self . lctx . with_hir_id_owner ( item. id , |lctx| {
439439 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) ;
443442 }
444443 } ) ;
445444
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 {
448447 hir:: ItemKind :: Impl ( _, _, _, ref generics, ..)
449448 | hir:: ItemKind :: Trait ( _, _, ref generics, ..) => {
450449 generics. params . clone ( )
@@ -516,7 +515,8 @@ impl<'a> LoweringContext<'a> {
516515 }
517516 }
518517
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 ;
520520 self . items . insert ( id, item) ;
521521 self . modules . get_mut ( & self . current_module ) . unwrap ( ) . items . insert ( id) ;
522522 }
@@ -1422,10 +1422,10 @@ impl<'a> LoweringContext<'a> {
14221422 // Insert the item into the global list. This usually happens
14231423 // automatically for all AST items. But this existential type item
14241424 // 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) ;
14261426
14271427 // `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)
14291429 } )
14301430 }
14311431
@@ -2002,9 +2002,9 @@ impl<'a> LoweringContext<'a> {
20022002 )
20032003 }
20042004
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 ] > ) {
20062006 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 ( ) ;
20082008 if self . sess . features_untracked ( ) . impl_trait_in_bindings {
20092009 if let Some ( ref ty) = l. ty {
20102010 let mut visitor = ImplTraitTypeIdVisitor { ids : & mut ids } ;
@@ -3114,7 +3114,6 @@ impl<'a> LoweringContext<'a> {
31143114 let vis = respan ( vis. span , vis_kind) ;
31153115
31163116 this. insert_item (
3117- new_id. node_id ,
31183117 hir:: Item {
31193118 hir_id : new_id. hir_id ,
31203119 ident,
@@ -3219,7 +3218,6 @@ impl<'a> LoweringContext<'a> {
32193218 let vis = respan ( vis. span , vis_kind) ;
32203219
32213220 this. insert_item (
3222- new_id,
32233221 hir:: Item {
32243222 hir_id : new_hir_id,
32253223 ident,
@@ -3443,43 +3441,47 @@ impl<'a> LoweringContext<'a> {
34433441 }
34443442
34453443 fn lower_item_id ( & mut self , i : & Item ) -> SmallVec < [ hir:: ItemId ; 1 ] > {
3446- match i. node {
3444+ let node_ids = match i. node {
34473445 ItemKind :: Use ( ref use_tree) => {
3448- let mut vec = smallvec ! [ hir :: ItemId { id : i. id } ] ;
3446+ let mut vec = smallvec ! [ i. id] ;
34493447 self . lower_item_id_use_tree ( use_tree, i. id , & mut vec) ;
34503448 vec
34513449 }
34523450 ItemKind :: MacroDef ( ..) => SmallVec :: new ( ) ,
34533451 ItemKind :: Fn ( ..) |
3454- ItemKind :: Impl ( .., None , _, _) => smallvec ! [ hir :: ItemId { id : i. id } ] ,
3452+ ItemKind :: Impl ( .., None , _, _) => smallvec ! [ i. id] ,
34553453 ItemKind :: Static ( ref ty, ..) => {
3456- let mut ids = smallvec ! [ hir :: ItemId { id : i. id } ] ;
3454+ let mut ids = smallvec ! [ i. id] ;
34573455 if self . sess . features_untracked ( ) . impl_trait_in_bindings {
34583456 let mut visitor = ImplTraitTypeIdVisitor { ids : & mut ids } ;
34593457 visitor. visit_ty ( ty) ;
34603458 }
34613459 ids
34623460 } ,
34633461 ItemKind :: Const ( ref ty, ..) => {
3464- let mut ids = smallvec ! [ hir :: ItemId { id : i. id } ] ;
3462+ let mut ids = smallvec ! [ i. id] ;
34653463 if self . sess . features_untracked ( ) . impl_trait_in_bindings {
34663464 let mut visitor = ImplTraitTypeIdVisitor { ids : & mut ids } ;
34673465 visitor. visit_ty ( ty) ;
34683466 }
34693467 ids
34703468 } ,
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 ( )
34733475 }
34743476
34753477 fn lower_item_id_use_tree ( & mut self ,
34763478 tree : & UseTree ,
34773479 base_id : NodeId ,
3478- vec : & mut SmallVec < [ hir :: ItemId ; 1 ] > )
3480+ vec : & mut SmallVec < [ NodeId ; 1 ] > )
34793481 {
34803482 match tree. kind {
34813483 UseTreeKind :: Nested ( ref nested_vec) => for & ( ref nested, id) in nested_vec {
3482- vec. push ( hir :: ItemId { id } ) ;
3484+ vec. push ( id ) ;
34833485 self . lower_item_id_use_tree ( nested, id, vec) ;
34843486 } ,
34853487 UseTreeKind :: Glob => { }
@@ -3488,7 +3490,7 @@ impl<'a> LoweringContext<'a> {
34883490 . skip ( 1 )
34893491 . zip ( [ id1, id2] . iter ( ) )
34903492 {
3491- vec. push ( hir :: ItemId { id } ) ;
3493+ vec. push ( id ) ;
34923494 }
34933495 } ,
34943496 }
@@ -4604,6 +4606,7 @@ impl<'a> LoweringContext<'a> {
46044606 let mut ids: SmallVec <[ hir:: Stmt ; 1 ] > = item_ids
46054607 . into_iter( )
46064608 . map( |item_id| {
4609+ let item_id = hir:: ItemId { id: self . lower_node_id( item_id) . hir_id } ;
46074610 let LoweredNodeId { node_id: _, hir_id } = self . next_id( ) ;
46084611
46094612 hir:: Stmt {
0 commit comments