2323
2424use rustc_data_structures:: fx:: FxHashMap ;
2525use rustc_data_structures:: sync:: Lock ;
26- use rustc_hir:: def_id:: LocalDefId ;
2726use rustc_macros:: HashStable ;
2827use rustc_type_ir:: Canonical as IrCanonical ;
2928use rustc_type_ir:: CanonicalVarInfo as IrCanonicalVarInfo ;
@@ -312,7 +311,6 @@ impl<'tcx> CanonicalParamEnvCache<'tcx> {
312311 & self ,
313312 tcx : TyCtxt < ' tcx > ,
314313 key : ty:: ParamEnv < ' tcx > ,
315- defining_opaque_types : & ' tcx ty:: List < LocalDefId > ,
316314 state : & mut OriginalQueryValues < ' tcx > ,
317315 canonicalize_op : fn (
318316 TyCtxt < ' tcx > ,
@@ -327,7 +325,7 @@ impl<'tcx> CanonicalParamEnvCache<'tcx> {
327325 max_universe : ty:: UniverseIndex :: ROOT ,
328326 variables : List :: empty ( ) ,
329327 value : key,
330- defining_opaque_types,
328+ defining_opaque_types : ty :: List :: empty ( ) ,
331329 } ;
332330 }
333331
@@ -338,12 +336,19 @@ impl<'tcx> CanonicalParamEnvCache<'tcx> {
338336 match self . map . borrow ( ) . entry ( key) {
339337 Entry :: Occupied ( e) => {
340338 let ( canonical, var_values) = e. get ( ) ;
339+ if cfg ! ( debug_assertions) {
340+ let mut state = state. clone ( ) ;
341+ let rerun_canonical = canonicalize_op ( tcx, key, & mut state) ;
342+ assert_eq ! ( rerun_canonical, * canonical) ;
343+ let OriginalQueryValues { var_values : rerun_var_values, universe_map } = state;
344+ assert_eq ! ( universe_map. len( ) , 1 ) ;
345+ assert_eq ! ( * * var_values, * rerun_var_values) ;
346+ }
341347 state. var_values . extend_from_slice ( var_values) ;
342348 * canonical
343349 }
344350 Entry :: Vacant ( e) => {
345- let mut canonical = canonicalize_op ( tcx, key, state) ;
346- canonical. defining_opaque_types = defining_opaque_types;
351+ let canonical = canonicalize_op ( tcx, key, state) ;
347352 let OriginalQueryValues { var_values, universe_map } = state;
348353 assert_eq ! ( universe_map. len( ) , 1 ) ;
349354 e. insert ( ( canonical, tcx. arena . alloc_slice ( var_values) ) ) ;
0 commit comments