@@ -10,7 +10,7 @@ use rustc_middle::span_bug;
1010use rustc_middle:: ty:: { ResolverAstLowering , TyCtxt } ;
1111use rustc_span:: edit_distance:: find_best_match_for_name;
1212use rustc_span:: { DesugaringKind , Ident , Span , Symbol , kw, sym} ;
13- use smallvec:: { SmallVec , smallvec } ;
13+ use smallvec:: SmallVec ;
1414use thin_vec:: ThinVec ;
1515use tracing:: instrument;
1616
@@ -27,6 +27,7 @@ use super::{
2727pub ( super ) struct ItemLowerer < ' hir > {
2828 pub ( super ) tcx : TyCtxt < ' hir > ,
2929 pub ( super ) resolver : & ' hir ResolverAstLowering ,
30+ pub ( super ) next_node_id : NodeId ,
3031}
3132
3233/// When we have a ty alias we *may* have two where clauses. To give the best diagnostics, we set the span
@@ -56,7 +57,7 @@ impl<'hir> ItemLowerer<'hir> {
5657 owner : NodeId ,
5758 f : impl FnOnce ( & mut LoweringContext < ' hir > ) -> hir:: OwnerNode < ' hir > ,
5859 ) -> hir:: MaybeOwner < ' hir > {
59- let mut lctx = LoweringContext :: new ( self . tcx , self . resolver , owner) ;
60+ let mut lctx = LoweringContext :: new ( self . tcx , self . resolver , owner, self . next_node_id ) ;
6061
6162 let item = f ( & mut lctx) ;
6263 debug_assert_eq ! ( lctx. current_hir_id_owner, item. def_id( ) ) ;
@@ -105,28 +106,12 @@ impl<'hir> LoweringContext<'hir> {
105106 inner_span : self . lower_span ( spans. inner_span ) ,
106107 inject_use_span : self . lower_span ( spans. inject_use_span ) ,
107108 } ,
108- item_ids : self . arena . alloc_from_iter ( items. iter ( ) . flat_map ( |x| self . lower_item_ref ( x) ) ) ,
109+ item_ids : self . arena . alloc_from_iter ( items. iter ( ) . map ( |x| self . lower_item_ref ( x) ) ) ,
109110 } )
110111 }
111112
112- pub ( super ) fn lower_item_ref ( & mut self , i : & Item ) -> SmallVec < [ hir:: ItemId ; 1 ] > {
113- let mut node_ids = smallvec ! [ hir:: ItemId { owner_id: self . owner_id( i. id) } ] ;
114- if let ItemKind :: Use ( use_tree) = & i. kind {
115- self . lower_item_id_use_tree ( use_tree, & mut node_ids) ;
116- }
117- node_ids
118- }
119-
120- fn lower_item_id_use_tree ( & mut self , tree : & UseTree , vec : & mut SmallVec < [ hir:: ItemId ; 1 ] > ) {
121- match & tree. kind {
122- UseTreeKind :: Nested { items, .. } => {
123- for & ( ref nested, id) in items {
124- vec. push ( hir:: ItemId { owner_id : self . owner_id ( id) } ) ;
125- self . lower_item_id_use_tree ( nested, vec) ;
126- }
127- }
128- UseTreeKind :: Simple ( ..) | UseTreeKind :: Glob => { }
129- }
113+ pub ( super ) fn lower_item_ref ( & mut self , i : & Item ) -> hir:: ItemId {
114+ hir:: ItemId { owner_id : self . owner_id ( i. id ) }
130115 }
131116
132117 fn lower_item ( & mut self , i : & Item ) -> & ' hir hir:: Item < ' hir > {
0 commit comments