@@ -12,7 +12,7 @@ use rustc_middle::span_bug;
1212use rustc_middle:: ty:: { ResolverAstLowering , TyCtxt } ;
1313use rustc_span:: edit_distance:: find_best_match_for_name;
1414use rustc_span:: { DesugaringKind , Ident , Span , Symbol , kw, sym} ;
15- use smallvec:: { SmallVec , smallvec } ;
15+ use smallvec:: SmallVec ;
1616use thin_vec:: ThinVec ;
1717use tracing:: instrument;
1818
@@ -26,6 +26,7 @@ use super::{
2626pub ( super ) struct ItemLowerer < ' hir > {
2727 pub ( super ) tcx : TyCtxt < ' hir > ,
2828 pub ( super ) resolver : & ' hir ResolverAstLowering ,
29+ pub ( super ) next_node_id : NodeId ,
2930}
3031
3132/// When we have a ty alias we *may* have two where clauses. To give the best diagnostics, we set the span
@@ -53,7 +54,7 @@ impl<'hir> ItemLowerer<'hir> {
5354 owner : NodeId ,
5455 f : impl FnOnce ( & mut LoweringContext < ' hir > ) -> hir:: OwnerNode < ' hir > ,
5556 ) -> hir:: MaybeOwner < ' hir > {
56- let mut lctx = LoweringContext :: new ( self . tcx , self . resolver , owner) ;
57+ let mut lctx = LoweringContext :: new ( self . tcx , self . resolver , owner, self . next_node_id ) ;
5758
5859 let item = f ( & mut lctx) ;
5960 debug_assert_eq ! ( lctx. current_hir_id_owner, item. def_id( ) ) ;
@@ -102,28 +103,12 @@ impl<'hir> LoweringContext<'hir> {
102103 inner_span : self . lower_span ( spans. inner_span ) ,
103104 inject_use_span : self . lower_span ( spans. inject_use_span ) ,
104105 } ,
105- item_ids : self . arena . alloc_from_iter ( items. iter ( ) . flat_map ( |x| self . lower_item_ref ( x) ) ) ,
106+ item_ids : self . arena . alloc_from_iter ( items. iter ( ) . map ( |x| self . lower_item_ref ( x) ) ) ,
106107 } )
107108 }
108109
109- pub ( super ) fn lower_item_ref ( & mut self , i : & Item ) -> SmallVec < [ hir:: ItemId ; 1 ] > {
110- let mut node_ids = smallvec ! [ hir:: ItemId { owner_id: self . owner_id( i. id) } ] ;
111- if let ItemKind :: Use ( use_tree) = & i. kind {
112- self . lower_item_id_use_tree ( use_tree, & mut node_ids) ;
113- }
114- node_ids
115- }
116-
117- fn lower_item_id_use_tree ( & mut self , tree : & UseTree , vec : & mut SmallVec < [ hir:: ItemId ; 1 ] > ) {
118- match & tree. kind {
119- UseTreeKind :: Nested { items, .. } => {
120- for & ( ref nested, id) in items {
121- vec. push ( hir:: ItemId { owner_id : self . owner_id ( id) } ) ;
122- self . lower_item_id_use_tree ( nested, vec) ;
123- }
124- }
125- UseTreeKind :: Simple ( ..) | UseTreeKind :: Glob => { }
126- }
110+ pub ( super ) fn lower_item_ref ( & mut self , i : & Item ) -> hir:: ItemId {
111+ hir:: ItemId { owner_id : self . owner_id ( i. id ) }
127112 }
128113
129114 fn lower_item ( & mut self , i : & Item ) -> & ' hir hir:: Item < ' hir > {
0 commit comments