@@ -34,7 +34,7 @@ use std::ops::Index;
34
34
use crate :: infer:: MemberConstraint ;
35
35
use crate :: mir:: ConstraintCategory ;
36
36
use crate :: ty:: GenericArg ;
37
- use crate :: ty:: { self , BoundVar , List , Region , Ty , TyCtxt } ;
37
+ use crate :: ty:: { self , BoundVar , List , Region , Ty , TyCtxt , TypeFlags , TypeVisitableExt } ;
38
38
39
39
pub type Canonical < ' tcx , V > = IrCanonical < TyCtxt < ' tcx > , V > ;
40
40
@@ -315,6 +315,16 @@ impl<'tcx> CanonicalParamEnvCache<'tcx> {
315
315
& mut OriginalQueryValues < ' tcx > ,
316
316
) -> Canonical < ' tcx , ty:: ParamEnv < ' tcx > > ,
317
317
) -> Canonical < ' tcx , ty:: ParamEnv < ' tcx > > {
318
+ if !key. has_type_flags (
319
+ TypeFlags :: HAS_INFER | TypeFlags :: HAS_PLACEHOLDER | TypeFlags :: HAS_FREE_REGIONS ,
320
+ ) {
321
+ return Canonical {
322
+ max_universe : ty:: UniverseIndex :: ROOT ,
323
+ variables : List :: empty ( ) ,
324
+ value : key,
325
+ } ;
326
+ }
327
+
318
328
assert_eq ! ( state. var_values. len( ) , 0 ) ;
319
329
assert_eq ! ( state. universe_map. len( ) , 1 ) ;
320
330
debug_assert_eq ! ( & * state. universe_map, & [ ty:: UniverseIndex :: ROOT ] ) ;
0 commit comments