@@ -8,20 +8,13 @@ use std::sync::atomic::Ordering;
8
8
9
9
crate fn provide ( p : & mut Providers ) {
10
10
* 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) ;
13
13
14
14
tcx. sess
15
15
. perf_stats
16
16
. normalize_generic_arg_after_erasing_regions
17
17
. 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) ;
25
18
26
19
try_normalize_after_erasing_regions ( tcx, goal)
27
20
} ,
@@ -32,38 +25,6 @@ crate fn provide(p: &mut Providers) {
32
25
} ;
33
26
}
34
27
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
-
67
28
#[ instrument( level = "debug" , skip( tcx) ) ]
68
29
fn try_normalize_after_erasing_regions < ' tcx , T : TypeFoldable < ' tcx > + PartialEq + Copy > (
69
30
tcx : TyCtxt < ' tcx > ,
0 commit comments