@@ -10,7 +10,7 @@ use rustc_middle::span_bug;
10
10
use rustc_middle:: ty:: { ResolverAstLowering , TyCtxt } ;
11
11
use rustc_span:: edit_distance:: find_best_match_for_name;
12
12
use rustc_span:: { DesugaringKind , Ident , Span , Symbol , kw, sym} ;
13
- use smallvec:: { SmallVec , smallvec } ;
13
+ use smallvec:: SmallVec ;
14
14
use thin_vec:: ThinVec ;
15
15
use tracing:: instrument;
16
16
@@ -27,6 +27,7 @@ use super::{
27
27
pub ( super ) struct ItemLowerer < ' hir > {
28
28
pub ( super ) tcx : TyCtxt < ' hir > ,
29
29
pub ( super ) resolver : & ' hir ResolverAstLowering ,
30
+ pub ( super ) next_node_id : NodeId ,
30
31
}
31
32
32
33
/// 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> {
56
57
owner : NodeId ,
57
58
f : impl FnOnce ( & mut LoweringContext < ' hir > ) -> hir:: OwnerNode < ' hir > ,
58
59
) -> 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 ) ;
60
61
61
62
let item = f ( & mut lctx) ;
62
63
debug_assert_eq ! ( lctx. current_hir_id_owner, item. def_id( ) ) ;
@@ -105,28 +106,12 @@ impl<'hir> LoweringContext<'hir> {
105
106
inner_span : self . lower_span ( spans. inner_span ) ,
106
107
inject_use_span : self . lower_span ( spans. inject_use_span ) ,
107
108
} ,
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) ) ) ,
109
110
} )
110
111
}
111
112
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 ) }
130
115
}
131
116
132
117
fn lower_item ( & mut self , i : & Item ) -> & ' hir hir:: Item < ' hir > {
0 commit comments