@@ -56,7 +56,7 @@ use rustc_hir::def_id::{LocalDefId, CRATE_DEF_ID};
5656use rustc_hir:: definitions:: { DefPathData , Definitions } ;
5757use rustc_hir:: { ConstArg , GenericArg , ItemLocalId , ParamName , TraitCandidate } ;
5858use rustc_index:: vec:: { Idx , IndexVec } ;
59- use rustc_middle:: ty:: ResolverOutputs ;
59+ use rustc_middle:: ty:: { ResolverAstLowering , ResolverOutputs } ;
6060use rustc_query_system:: ich:: StableHashingContext ;
6161use rustc_session:: cstore:: CrateStoreDyn ;
6262use rustc_session:: parse:: feature_err;
@@ -91,7 +91,8 @@ struct LoweringContext<'a, 'hir: 'a> {
9191
9292 definitions : & ' a mut Definitions ,
9393 cstore : & ' a CrateStoreDyn ,
94- resolver : & ' a mut ResolverOutputs ,
94+ resolutions : & ' a ResolverOutputs ,
95+ resolver : & ' a mut ResolverAstLowering ,
9596
9697 /// Used to allocate HIR nodes.
9798 arena : & ' hir Arena < ' hir > ,
@@ -133,10 +134,6 @@ struct LoweringContext<'a, 'hir: 'a> {
133134 /// NodeIds that are lowered inside the current HIR owner.
134135 node_id_to_local_id : FxHashMap < NodeId , hir:: ItemLocalId > ,
135136
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-
140137 allow_try_trait : Option < Lrc < [ Symbol ] > > ,
141138 allow_gen_future : Option < Lrc < [ Symbol ] > > ,
142139 allow_into_future : Option < Lrc < [ Symbol ] > > ,
@@ -174,7 +171,7 @@ trait ResolverAstLoweringExt {
174171 fn decl_macro_kind ( & self , def_id : LocalDefId ) -> MacroKind ;
175172}
176173
177- impl ResolverAstLoweringExt for ResolverOutputs {
174+ impl ResolverAstLoweringExt for ResolverAstLowering {
178175 fn legacy_const_generic_args ( & self , expr : & Expr ) -> Option < Vec < usize > > {
179176 if let ExprKind :: Path ( None , path) = & expr. kind {
180177 // Don't perform legacy const generics rewriting if the path already
@@ -415,7 +412,8 @@ pub fn lower_crate<'hir>(
415412 krate : & Crate ,
416413 definitions : & mut Definitions ,
417414 cstore : & CrateStoreDyn ,
418- resolver : & mut ResolverOutputs ,
415+ resolutions : & ResolverOutputs ,
416+ mut resolver : ResolverAstLowering ,
419417 arena : & ' hir Arena < ' hir > ,
420418) -> & ' hir hir:: Crate < ' hir > {
421419 let _prof_timer = sess. prof . verbose_generic_activity ( "hir_lowering" ) ;
@@ -430,15 +428,16 @@ pub fn lower_crate<'hir>(
430428 sess,
431429 definitions,
432430 cstore,
433- resolver,
431+ resolutions,
432+ resolver : & mut resolver,
434433 arena,
435434 ast_index : & ast_index,
436435 owners : & mut owners,
437436 }
438437 . lower_node ( def_id) ;
439438 }
440439
441- let hir_hash = compute_hir_hash ( sess, definitions, cstore, resolver , & owners) ;
440+ let hir_hash = compute_hir_hash ( sess, definitions, cstore, resolutions , & owners) ;
442441 let krate = hir:: Crate { owners, hir_hash } ;
443442 arena. alloc ( krate)
444443}
@@ -464,7 +463,7 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
464463 self . sess ,
465464 self . definitions ,
466465 self . cstore ,
467- & self . resolver . source_span ,
466+ & self . resolutions . source_span ,
468467 )
469468 }
470469
@@ -489,25 +488,21 @@ impl<'a, 'hir> LoweringContext<'a, 'hir> {
489488 // we don't need a mapping from `NodeId` to `LocalDefId`.
490489 if node_id != ast:: DUMMY_NODE_ID {
491490 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) ;
493492 }
494493
495494 def_id
496495 }
497496
498497 fn next_node_id ( & mut self ) -> NodeId {
499- let start = self . next_node_id ;
498+ let start = self . resolver . next_node_id ;
500499 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) ;
502501 start
503502 }
504503
505504 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 ( )
511506 }
512507
513508 fn local_def_id ( & self , node : NodeId ) -> LocalDefId {
0 commit comments