@@ -91,9 +91,9 @@ mod pat;
9191mod path;
9292pub mod stability;
9393
94- struct LoweringContext < ' hir > {
94+ struct LoweringContext < ' a , ' hir > {
9595 tcx : TyCtxt < ' hir > ,
96- resolver : & ' hir ResolverAstLowering < ' hir > ,
96+ resolver : & ' a ResolverAstLowering < ' hir > ,
9797 disambiguator : PerParentDisambiguatorState ,
9898
9999 /// Used to allocate HIR nodes.
@@ -161,8 +161,8 @@ struct LoweringContext<'hir> {
161161 attribute_parser : AttributeParser < ' hir > ,
162162}
163163
164- impl < ' hir > LoweringContext < ' hir > {
165- fn new ( tcx : TyCtxt < ' hir > , resolver : & ' hir ResolverAstLowering < ' hir > ) -> Self {
164+ impl < ' a , ' hir > LoweringContext < ' a , ' hir > {
165+ fn new ( tcx : TyCtxt < ' hir > , resolver : & ' a ResolverAstLowering < ' hir > ) -> Self {
166166 let registered_tools = tcx. registered_tools ( ( ) ) . iter ( ) . map ( |x| x. name ) . collect ( ) ;
167167 Self {
168168 tcx,
@@ -535,8 +535,7 @@ pub fn lower_to_hir(tcx: TyCtxt<'_>, (): ()) -> mid_hir::Crate<'_> {
535535 tcx. ensure_done ( ) . early_lint_checks ( ( ) ) ;
536536 tcx. ensure_done ( ) . debugger_visualizers ( LOCAL_CRATE ) ;
537537 tcx. ensure_done ( ) . get_lang_items ( ( ) ) ;
538- let ( resolver, krate) = tcx. resolver_for_lowering ( ) ;
539- let krate = krate. steal ( ) ;
538+ let ( resolver, krate) = tcx. resolver_for_lowering ( ) . steal ( ) ;
540539
541540 let ast_index = index_crate ( & resolver, & krate) ;
542541 let mut owners = IndexVec :: from_fn_n (
@@ -546,7 +545,7 @@ pub fn lower_to_hir(tcx: TyCtxt<'_>, (): ()) -> mid_hir::Crate<'_> {
546545
547546 let mut lowerer = item:: ItemLowerer {
548547 tcx,
549- resolver,
548+ resolver : & resolver ,
550549 ast_index : & ast_index,
551550 owners : Owners :: IndexVec ( & mut owners) ,
552551 } ;
@@ -567,16 +566,15 @@ pub fn lower_to_hir(tcx: TyCtxt<'_>, (): ()) -> mid_hir::Crate<'_> {
567566 let opt_hir_hash =
568567 if tcx. needs_crate_hash ( ) { Some ( compute_hir_hash ( tcx, & owners) ) } else { None } ;
569568
570- let ast_krate = Steal :: new ( krate) ;
571- mid_hir:: Crate :: new ( owners, delayed_ids, ast_krate , opt_hir_hash)
569+ let delayed_resolver = Steal :: new ( ( resolver , krate) ) ;
570+ mid_hir:: Crate :: new ( owners, delayed_ids, delayed_resolver , opt_hir_hash)
572571}
573572
574573/// Lowers an AST owner corresponding to `def_id`, now only delegations are lowered this way.
575574pub fn lower_delayed_owner ( tcx : TyCtxt < ' _ > , def_id : LocalDefId ) {
576575 let krate = tcx. hir_crate ( ( ) ) ;
577576
578- let ( resolver, _) = tcx. resolver_for_lowering ( ) ;
579- let krate = & * krate. ast_krate . borrow ( ) ;
577+ let ( resolver, krate) = & * krate. delayed_resolver . borrow ( ) ;
580578
581579 // FIXME!!!(fn_delegation): make ast index lifetime same as resolver,
582580 // as it is too bad to reindex whole crate on each delegation lowering.
@@ -625,7 +623,7 @@ enum GenericArgsMode {
625623 Silence ,
626624}
627625
628- impl < ' hir > LoweringContext < ' hir > {
626+ impl < ' hir > LoweringContext < ' _ , ' hir > {
629627 fn create_def (
630628 & mut self ,
631629 node_id : ast:: NodeId ,
@@ -3027,7 +3025,7 @@ impl<'hir> GenericArgsCtor<'hir> {
30273025 && self . parenthesized == hir:: GenericArgsParentheses :: No
30283026 }
30293027
3030- fn into_generic_args ( self , this : & LoweringContext < ' hir > ) -> & ' hir hir:: GenericArgs < ' hir > {
3028+ fn into_generic_args ( self , this : & LoweringContext < ' _ , ' hir > ) -> & ' hir hir:: GenericArgs < ' hir > {
30313029 let ga = hir:: GenericArgs {
30323030 args : this. arena . alloc_from_iter ( self . args ) ,
30333031 constraints : self . constraints ,
0 commit comments