@@ -8,20 +8,13 @@ use std::sync::atomic::Ordering;
88
99crate fn provide ( p : & mut Providers ) {
1010 * p = Providers {
11- normalize_generic_arg_after_erasing_regions : |tcx, goal| {
12- debug ! ( "normalize_generic_arg_after_erasing_regions (goal={:#?}) " , goal) ;
11+ try_normalize_generic_arg_after_erasing_regions : |tcx, goal| {
12+ debug ! ( "try_normalize_generic_arg_after_erasing_regions (goal={:#?}" , goal) ;
1313
1414 tcx. sess
1515 . perf_stats
1616 . normalize_generic_arg_after_erasing_regions
1717 . fetch_add ( 1 , Ordering :: Relaxed ) ;
18- normalize_after_erasing_regions ( tcx, goal)
19- } ,
20- normalize_mir_const_after_erasing_regions : |tcx, goal| {
21- normalize_after_erasing_regions ( tcx, goal)
22- } ,
23- try_normalize_generic_arg_after_erasing_regions : |tcx, goal| {
24- debug ! ( "try_normalize_generic_arg_after_erasing_regions(goal={:#?}" , goal) ;
2518
2619 try_normalize_after_erasing_regions ( tcx, goal)
2720 } ,
@@ -32,38 +25,6 @@ crate fn provide(p: &mut Providers) {
3225 } ;
3326}
3427
35- #[ instrument( level = "debug" , skip( tcx) ) ]
36- fn normalize_after_erasing_regions < ' tcx , T : TypeFoldable < ' tcx > + PartialEq + Copy > (
37- tcx : TyCtxt < ' tcx > ,
38- goal : ParamEnvAnd < ' tcx , T > ,
39- ) -> T {
40- let ParamEnvAnd { param_env, value } = goal;
41- tcx. infer_ctxt ( ) . enter ( |infcx| {
42- let cause = ObligationCause :: dummy ( ) ;
43- match infcx. at ( & cause, param_env) . normalize ( value) {
44- Ok ( Normalized { value : normalized_value, obligations : normalized_obligations } ) => {
45- // We don't care about the `obligations`; they are
46- // always only region relations, and we are about to
47- // erase those anyway:
48- debug_assert_eq ! (
49- normalized_obligations. iter( ) . find( |p| not_outlives_predicate( & p. predicate) ) ,
50- None ,
51- ) ;
52-
53- let resolved_value = infcx. resolve_vars_if_possible ( normalized_value) ;
54- // It's unclear when `resolve_vars` would have an effect in a
55- // fresh `InferCtxt`. If this assert does trigger, it will give
56- // us a test case.
57- debug_assert_eq ! ( normalized_value, resolved_value) ;
58- let erased = infcx. tcx . erase_regions ( resolved_value) ;
59- debug_assert ! ( !erased. needs_infer( ) , "{:?}" , erased) ;
60- erased
61- }
62- Err ( NoSolution ) => bug ! ( "could not fully normalize `{:?}`" , value) ,
63- }
64- } )
65- }
66-
6728#[ instrument( level = "debug" , skip( tcx) ) ]
6829fn try_normalize_after_erasing_regions < ' tcx , T : TypeFoldable < ' tcx > + PartialEq + Copy > (
6930 tcx : TyCtxt < ' tcx > ,
0 commit comments