@@ -13,7 +13,7 @@ use rustc_middle::ty::{ResolverAstLowering, TyCtxt};
1313use rustc_span:: def_id:: DefId ;
1414use rustc_span:: edit_distance:: find_best_match_for_name;
1515use rustc_span:: { DesugaringKind , Ident , Span , Symbol , kw, sym} ;
16- use smallvec:: { SmallVec , smallvec } ;
16+ use smallvec:: SmallVec ;
1717use thin_vec:: ThinVec ;
1818use tracing:: instrument;
1919
@@ -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
@@ -54,7 +55,7 @@ impl<'hir> ItemLowerer<'hir> {
5455 owner : NodeId ,
5556 f : impl FnOnce ( & mut LoweringContext < ' hir > ) -> hir:: OwnerNode < ' hir > ,
5657 ) -> hir:: MaybeOwner < ' hir > {
57- let mut lctx = LoweringContext :: new ( self . tcx , self . resolver , owner) ;
58+ let mut lctx = LoweringContext :: new ( self . tcx , self . resolver , owner, self . next_node_id ) ;
5859
5960 let item = f ( & mut lctx) ;
6061 debug_assert_eq ! ( lctx. current_hir_id_owner, item. def_id( ) ) ;
@@ -103,28 +104,12 @@ impl<'hir> LoweringContext<'hir> {
103104 inner_span : self . lower_span ( spans. inner_span ) ,
104105 inject_use_span : self . lower_span ( spans. inject_use_span ) ,
105106 } ,
106- item_ids : self . arena . alloc_from_iter ( items. iter ( ) . flat_map ( |x| self . lower_item_ref ( x) ) ) ,
107+ item_ids : self . arena . alloc_from_iter ( items. iter ( ) . map ( |x| self . lower_item_ref ( x) ) ) ,
107108 } )
108109 }
109110
110- pub ( super ) fn lower_item_ref ( & mut self , i : & Item ) -> SmallVec < [ hir:: ItemId ; 1 ] > {
111- let mut node_ids = smallvec ! [ hir:: ItemId { owner_id: self . owner_id( i. id) } ] ;
112- if let ItemKind :: Use ( use_tree) = & i. kind {
113- self . lower_item_id_use_tree ( use_tree, & mut node_ids) ;
114- }
115- node_ids
116- }
117-
118- fn lower_item_id_use_tree ( & mut self , tree : & UseTree , vec : & mut SmallVec < [ hir:: ItemId ; 1 ] > ) {
119- match & tree. kind {
120- UseTreeKind :: Nested { items, .. } => {
121- for & ( ref nested, id) in items {
122- vec. push ( hir:: ItemId { owner_id : self . owner_id ( id) } ) ;
123- self . lower_item_id_use_tree ( nested, vec) ;
124- }
125- }
126- UseTreeKind :: Simple ( ..) | UseTreeKind :: Glob => { }
127- }
111+ pub ( super ) fn lower_item_ref ( & mut self , i : & Item ) -> hir:: ItemId {
112+ hir:: ItemId { owner_id : self . owner_id ( i. id ) }
128113 }
129114
130115 fn generate_extra_attrs_for_item_kind (
0 commit comments