@@ -56,7 +56,7 @@ use rustc_hir::def_id::{LocalDefId, CRATE_DEF_ID};
56
56
use rustc_hir:: definitions:: { DefPathData , Definitions } ;
57
57
use rustc_hir:: { ConstArg , GenericArg , ItemLocalId , ParamName , TraitCandidate } ;
58
58
use rustc_index:: vec:: { Idx , IndexVec } ;
59
- use rustc_middle:: ty:: ResolverOutputs ;
59
+ use rustc_middle:: ty:: { ResolverAstLowering , ResolverOutputs } ;
60
60
use rustc_query_system:: ich:: StableHashingContext ;
61
61
use rustc_session:: cstore:: CrateStoreDyn ;
62
62
use rustc_session:: parse:: feature_err;
@@ -91,7 +91,8 @@ struct LoweringContext<'a, 'hir: 'a> {
91
91
92
92
definitions : & ' a mut Definitions ,
93
93
cstore : & ' a CrateStoreDyn ,
94
- resolver : & ' a mut ResolverOutputs ,
94
+ resolutions : & ' a ResolverOutputs ,
95
+ resolver : & ' a mut ResolverAstLowering ,
95
96
96
97
/// Used to allocate HIR nodes.
97
98
arena : & ' hir Arena < ' hir > ,
@@ -133,10 +134,6 @@ struct LoweringContext<'a, 'hir: 'a> {
133
134
/// NodeIds that are lowered inside the current HIR owner.
134
135
node_id_to_local_id : FxHashMap < NodeId , hir:: ItemLocalId > ,
135
136
136
- // The next_node_id is reset for each item.
137
- next_node_id : ast:: NodeId ,
138
- local_node_id_to_def_id : FxHashMap < ast:: NodeId , LocalDefId > ,
139
-
140
137
allow_try_trait : Option < Lrc < [ Symbol ] > > ,
141
138
allow_gen_future : Option < Lrc < [ Symbol ] > > ,
142
139
allow_into_future : Option < Lrc < [ Symbol ] > > ,
@@ -174,7 +171,7 @@ trait ResolverAstLoweringExt {
174
171
fn decl_macro_kind ( & self , def_id : LocalDefId ) -> MacroKind ;
175
172
}
176
173
177
- impl ResolverAstLoweringExt for ResolverOutputs {
174
+ impl ResolverAstLoweringExt for ResolverAstLowering {
178
175
fn legacy_const_generic_args ( & self , expr : & Expr ) -> Option < Vec < usize > > {
179
176
if let ExprKind :: Path ( None , path) = & expr. kind {
180
177
// Don't perform legacy const generics rewriting if the path already
@@ -415,7 +412,8 @@ pub fn lower_crate<'hir>(
415
412
krate : & Crate ,
416
413
definitions : & mut Definitions ,
417
414
cstore : & CrateStoreDyn ,
418
- resolver : & mut ResolverOutputs ,
415
+ resolutions : & ResolverOutputs ,
416
+ mut resolver : ResolverAstLowering ,
419
417
arena : & ' hir Arena < ' hir > ,
420
418
) -> & ' hir hir:: Crate < ' hir > {
421
419
let _prof_timer = sess. prof . verbose_generic_activity ( "hir_lowering" ) ;
@@ -430,15 +428,16 @@ pub fn lower_crate<'hir>(
430
428
sess,
431
429
definitions,
432
430
cstore,
433
- resolver,
431
+ resolutions,
432
+ resolver : & mut resolver,
434
433
arena,
435
434
ast_index : & ast_index,
436
435
owners : & mut owners,
437
436
}
438
437
. lower_node ( def_id) ;
439
438
}
440
439
441
- let hir_hash = compute_hir_hash ( sess, definitions, cstore, resolver , & owners) ;
440
+ let hir_hash = compute_hir_hash ( sess, definitions, cstore, resolutions , & owners) ;
442
441
let krate = hir:: Crate { owners, hir_hash } ;
443
442
arena. alloc ( krate)
444
443
}
@@ -464,7 +463,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
464
463
self . sess ,
465
464
self . definitions ,
466
465
self . cstore ,
467
- & self . resolver . source_span ,
466
+ & self . resolutions . source_span ,
468
467
)
469
468
}
470
469
@@ -489,25 +488,21 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
489
488
// we don't need a mapping from `NodeId` to `LocalDefId`.
490
489
if node_id != ast:: DUMMY_NODE_ID {
491
490
debug ! ( "create_def: def_id_to_node_id[{:?}] <-> {:?}" , def_id, node_id) ;
492
- self . local_node_id_to_def_id . insert ( node_id, def_id) ;
491
+ self . resolver . node_id_to_def_id . insert ( node_id, def_id) ;
493
492
}
494
493
495
494
def_id
496
495
}
497
496
498
497
fn next_node_id ( & mut self ) -> NodeId {
499
- let start = self . next_node_id ;
498
+ let start = self . resolver . next_node_id ;
500
499
let next = start. as_u32 ( ) . checked_add ( 1 ) . expect ( "input too large; ran out of NodeIds" ) ;
501
- self . next_node_id = ast:: NodeId :: from_u32 ( next) ;
500
+ self . resolver . next_node_id = ast:: NodeId :: from_u32 ( next) ;
502
501
start
503
502
}
504
503
505
504
fn opt_local_def_id ( & self , node : NodeId ) -> Option < LocalDefId > {
506
- if node <= self . resolver . next_node_id {
507
- self . resolver . node_id_to_def_id . get ( & node) . copied ( )
508
- } else {
509
- self . local_node_id_to_def_id . get ( & node) . copied ( )
510
- }
505
+ self . resolver . node_id_to_def_id . get ( & node) . copied ( )
511
506
}
512
507
513
508
fn local_def_id ( & self , node : NodeId ) -> LocalDefId {
0 commit comments