@@ -56,22 +56,23 @@ where
5656     /// 
5757     /// This expects `goal` and `opaque_types` to be eager resolved. 
5858     pub ( super )  fn  canonicalize_goal ( 
59-         & self , 
59+         delegate :   & D , 
6060        goal :  Goal < I ,  I :: Predicate > , 
6161        opaque_types :  Vec < ( ty:: OpaqueTypeKey < I > ,  I :: Ty ) > , 
6262    )  -> ( Vec < I :: GenericArg > ,  CanonicalInput < I ,  I :: Predicate > )  { 
6363        let  mut  orig_values = Default :: default ( ) ; 
6464        let  canonical = Canonicalizer :: canonicalize_input ( 
65-             self . delegate , 
65+             delegate, 
6666            & mut  orig_values, 
6767            QueryInput  { 
6868                goal, 
69-                 predefined_opaques_in_body :  self 
69+                 predefined_opaques_in_body :  delegate 
7070                    . cx ( ) 
7171                    . mk_predefined_opaques_in_body ( PredefinedOpaquesData  {  opaque_types } ) , 
7272            } , 
7373        ) ; 
74-         let  query_input = ty:: CanonicalQueryInput  {  canonical,  typing_mode :  self . typing_mode ( )  } ; 
74+         let  query_input =
75+             ty:: CanonicalQueryInput  {  canonical,  typing_mode :  delegate. typing_mode ( )  } ; 
7576        ( orig_values,  query_input) 
7677    } 
7778
@@ -271,37 +272,32 @@ where
271272     /// - we apply the `external_constraints` returned by the query, returning 
272273     ///   the `normalization_nested_goals` 
273274     pub ( super )  fn  instantiate_and_apply_query_response ( 
274-         & mut   self , 
275+         delegate :   & D , 
275276        param_env :  I :: ParamEnv , 
276277        original_values :  & [ I :: GenericArg ] , 
277278        response :  CanonicalResponse < I > , 
279+         span :  I :: Span , 
278280    )  -> ( NestedNormalizationGoals < I > ,  Certainty )  { 
279281        let  instantiation = Self :: compute_query_response_instantiation_values ( 
280-             self . delegate , 
282+             delegate, 
281283            & original_values, 
282284            & response, 
283-             self . origin_span , 
285+             span , 
284286        ) ; 
285287
286288        let  Response  {  var_values,  external_constraints,  certainty }  =
287-             self . delegate . instantiate_canonical ( response,  instantiation) ; 
289+             delegate. instantiate_canonical ( response,  instantiation) ; 
288290
289-         Self :: unify_query_var_values ( 
290-             self . delegate , 
291-             param_env, 
292-             & original_values, 
293-             var_values, 
294-             self . origin_span , 
295-         ) ; 
291+         Self :: unify_query_var_values ( delegate,  param_env,  & original_values,  var_values,  span) ; 
296292
297293        let  ExternalConstraintsData  { 
298294            region_constraints, 
299295            opaque_types, 
300296            normalization_nested_goals, 
301297        }  = & * external_constraints; 
302298
303-         self . register_region_constraints ( region_constraints) ; 
304-         self . register_new_opaque_types ( opaque_types) ; 
299+         Self :: register_region_constraints ( delegate ,   region_constraints,  span ) ; 
300+         Self :: register_new_opaque_types ( delegate ,   opaque_types,  span ) ; 
305301
306302        ( normalization_nested_goals. clone ( ) ,  certainty) 
307303    } 
@@ -424,21 +420,26 @@ where
424420    } 
425421
426422    fn  register_region_constraints ( 
427-         & mut   self , 
423+         delegate :   & D , 
428424        outlives :  & [ ty:: OutlivesPredicate < I ,  I :: GenericArg > ] , 
425+         span :  I :: Span , 
429426    )  { 
430427        for  & ty:: OutlivesPredicate ( lhs,  rhs)  in  outlives { 
431428            match  lhs. kind ( )  { 
432-                 ty:: GenericArgKind :: Lifetime ( lhs)  => self . register_region_outlives ( lhs,  rhs ) , 
433-                 ty:: GenericArgKind :: Type ( lhs)  => self . register_ty_outlives ( lhs,  rhs) , 
429+                 ty:: GenericArgKind :: Lifetime ( lhs)  => delegate . sub_regions ( rhs ,   lhs,  span ) , 
430+                 ty:: GenericArgKind :: Type ( lhs)  => delegate . register_ty_outlives ( lhs,  rhs,  span ) , 
434431                ty:: GenericArgKind :: Const ( _)  => panic ! ( "const outlives: {lhs:?}: {rhs:?}" ) , 
435432            } 
436433        } 
437434    } 
438435
439-     fn  register_new_opaque_types ( & mut  self ,  opaque_types :  & [ ( ty:: OpaqueTypeKey < I > ,  I :: Ty ) ] )  { 
436+     fn  register_new_opaque_types ( 
437+         delegate :  & D , 
438+         opaque_types :  & [ ( ty:: OpaqueTypeKey < I > ,  I :: Ty ) ] , 
439+         span :  I :: Span , 
440+     )  { 
440441        for  & ( key,  ty)  in  opaque_types { 
441-             let  prev = self . delegate . register_hidden_type_in_storage ( key,  ty,  self . origin_span ) ; 
442+             let  prev = delegate. register_hidden_type_in_storage ( key,  ty,  span ) ; 
442443            // We eagerly resolve inference variables when computing the query response. 
443444            // This can cause previously distinct opaque type keys to now be structurally equal. 
444445            // 
@@ -447,7 +448,7 @@ where
447448            // types here. However, doing so is difficult as it may result in nested goals and 
448449            // any errors may make it harder to track the control flow for diagnostics. 
449450            if  let  Some ( prev)  = prev { 
450-                 self . delegate . add_duplicate_opaque_type ( key,  prev,  self . origin_span ) ; 
451+                 delegate. add_duplicate_opaque_type ( key,  prev,  span ) ; 
451452            } 
452453        } 
453454    } 
0 commit comments