@@ -221,7 +221,7 @@ fn do_normalize_predicates<'tcx>(
221221 mut causes : impl Iterator < Item = ObligationCause < ' tcx > > + Debug ,
222222 elaborated_env : ty:: ParamEnv < ' tcx > ,
223223 predicates : Vec < ty:: Predicate < ' tcx > > ,
224- outlives : bool ,
224+ normalize_outlive_predicates : bool ,
225225) -> Result < Vec < ty:: Predicate < ' tcx > > , ErrorGuaranteed > {
226226 // FIXME. We should really... do something with these region
227227 // obligations. But this call just continues the older
@@ -237,24 +237,27 @@ fn do_normalize_predicates<'tcx>(
237237 // them here too, and we will remove this function when
238238 // we move over to lazy normalization *anyway*.
239239 tcx. infer_ctxt ( ) . ignoring_regions ( ) . enter ( |infcx| {
240- let predicates = match predicates. try_map_id ( |predicate| {
241- if outlives
242- != matches ! ( predicate. kind( ) . skip_binder( ) , ty:: PredicateKind :: TypeOutlives ( ..) )
240+ let normalized_predicates = match predicates. try_map_id ( |origin_predicate| {
241+ if normalize_outlive_predicates
242+ != matches ! (
243+ origin_predicate. kind( ) . skip_binder( ) ,
244+ ty:: PredicateKind :: TypeOutlives ( ..)
245+ )
243246 {
244247 causes. next ( ) . unwrap ( ) ;
245- Ok ( predicate )
248+ Ok ( origin_predicate )
246249 } else {
247- fully_normalize ( & infcx, causes. next ( ) . unwrap ( ) , elaborated_env, predicate )
250+ fully_normalize ( & infcx, causes. next ( ) . unwrap ( ) , elaborated_env, origin_predicate )
248251 }
249252 } ) {
250- Ok ( predicates ) => predicates ,
253+ Ok ( normalized ) => normalized ,
251254 Err ( errors) => {
252255 let reported = infcx. report_fulfillment_errors ( & errors, None , false ) ;
253256 return Err ( reported) ;
254257 }
255258 } ;
256259
257- debug ! ( "do_normalize_predictes: normalized predicates = {:?}" , predicates ) ;
260+ debug ! ( "do_normalize_predictes: normalized predicates = {:?}" , normalized_predicates ) ;
258261
259262 // We can use the `elaborated_env` here; the region code only
260263 // cares about declarations like `'a: 'b`.
@@ -273,17 +276,17 @@ fn do_normalize_predicates<'tcx>(
273276 ) ;
274277 }
275278
276- match predicates . try_map_id ( |predicate| {
277- if outlives
278- != matches ! ( predicate . kind ( ) . skip_binder ( ) , ty :: PredicateKind :: TypeOutlives ( .. ) )
279- {
280- Ok ( predicate )
281- } else {
282- infcx . fully_resolve ( predicate )
283- }
284- } ) {
285- Ok ( predicates ) => Ok ( predicates ) ,
286- Err ( fixup_err) => {
279+ normalized_predicates
280+ . try_map_id ( |predicate| {
281+ if normalize_outlive_predicates
282+ != matches ! ( predicate . kind ( ) . skip_binder ( ) , ty :: PredicateKind :: TypeOutlives ( .. ) )
283+ {
284+ Ok ( predicate )
285+ } else {
286+ infcx . fully_resolve ( predicate )
287+ }
288+ } )
289+ . map_err ( | fixup_err| {
287290 // If we encounter a fixup error, it means that some type
288291 // variable wound up unconstrained. I actually don't know
289292 // if this can happen, and I certainly don't expect it to
@@ -298,8 +301,7 @@ fn do_normalize_predicates<'tcx>(
298301 "inference variables in normalized parameter environment: {}" ,
299302 fixup_err
300303 ) ;
301- }
302- }
304+ } )
303305 } )
304306}
305307
0 commit comments