@@ -2,7 +2,7 @@ use rustc_infer::infer::TyCtxtInferExt;
22use rustc_middle:: traits:: query:: NoSolution ;
33use rustc_middle:: ty:: query:: Providers ;
44use rustc_middle:: ty:: subst:: GenericArg ;
5- use rustc_middle:: ty:: { self , ParamEnvAnd , TyCtxt } ;
5+ use rustc_middle:: ty:: { self , ParamEnvAnd , TyCtxt , TypeFoldable } ;
66use rustc_trait_selection:: traits:: query:: normalize:: AtExt ;
77use rustc_trait_selection:: traits:: { Normalized , ObligationCause } ;
88use std:: sync:: atomic:: Ordering ;
@@ -31,8 +31,14 @@ fn normalize_generic_arg_after_erasing_regions<'tcx>(
3131 None ,
3232 ) ;
3333
34- let normalized_value = infcx. resolve_vars_if_possible ( normalized_value) ;
35- infcx. tcx . erase_regions ( normalized_value)
34+ let resolved_value = infcx. resolve_vars_if_possible ( normalized_value) ;
35+ // It's unclear when `resolve_vars` would have an effect in a
36+ // fresh `InferCtxt`. If this assert does trigger, it will give
37+ // us a test case.
38+ debug_assert_eq ! ( normalized_value, resolved_value) ;
39+ let erased = infcx. tcx . erase_regions ( resolved_value) ;
40+ debug_assert ! ( !erased. needs_infer( ) , "{:?}" , erased) ;
41+ erased
3642 }
3743 Err ( NoSolution ) => bug ! ( "could not fully normalize `{:?}`" , value) ,
3844 }
0 commit comments