@@ -390,6 +390,7 @@ pub fn normalize_param_env_or_error<'tcx>(
390390}
391391
392392/// Normalize a type and process all resulting obligations, returning any errors
393+ #[ instrument( skip_all) ]
393394pub fn fully_normalize < ' tcx , T > (
394395 infcx : & InferCtxt < ' tcx > ,
395396 cause : ObligationCause < ' tcx > ,
@@ -399,28 +400,18 @@ pub fn fully_normalize<'tcx, T>(
399400where
400401 T : TypeFoldable < ' tcx > ,
401402{
402- debug ! ( "fully_normalize_with_fulfillcx(value={:?})" , value) ;
403- let selcx = & mut SelectionContext :: new ( infcx) ;
404- let Normalized { value : normalized_value, obligations } =
405- project:: normalize ( selcx, param_env, cause, value) ;
406- debug ! (
407- "fully_normalize: normalized_value={:?} obligations={:?}" ,
408- normalized_value, obligations
409- ) ;
410-
411- let mut fulfill_cx = FulfillmentContext :: new ( ) ;
412- for obligation in obligations {
413- fulfill_cx. register_predicate_obligation ( infcx, obligation) ;
414- }
415-
416- debug ! ( "fully_normalize: select_all_or_error start" ) ;
417- let errors = fulfill_cx. select_all_or_error ( infcx) ;
403+ let ocx = ObligationCtxt :: new ( infcx) ;
404+ debug ! ( ?value) ;
405+ let normalized_value = ocx. normalize ( cause, param_env, value) ;
406+ debug ! ( ?normalized_value) ;
407+ debug ! ( "select_all_or_error start" ) ;
408+ let errors = ocx. select_all_or_error ( ) ;
418409 if !errors. is_empty ( ) {
419410 return Err ( errors) ;
420411 }
421- debug ! ( "fully_normalize: select_all_or_error complete" ) ;
412+ debug ! ( "select_all_or_error complete" ) ;
422413 let resolved_value = infcx. resolve_vars_if_possible ( normalized_value) ;
423- debug ! ( "fully_normalize: resolved_value={:?}" , resolved_value) ;
414+ debug ! ( ? resolved_value) ;
424415 Ok ( resolved_value)
425416}
426417
0 commit comments