@@ -19,7 +19,6 @@ extern crate tracing;
1919
2020use rustc_data_structures:: fx:: { FxIndexMap , FxIndexSet } ;
2121use rustc_data_structures:: graph:: dominators:: Dominators ;
22- use rustc_data_structures:: vec_map:: VecMap ;
2322use rustc_errors:: { Diagnostic , DiagnosticBuilder , DiagnosticMessage , SubdiagnosticMessage } ;
2423use rustc_hir as hir;
2524use rustc_hir:: def_id:: LocalDefId ;
@@ -141,7 +140,7 @@ fn mir_borrowck(tcx: TyCtxt<'_>, def: ty::WithOptConstParam<LocalDefId>) -> &Bor
141140 debug ! ( "Skipping borrowck because of injected body" ) ;
142141 // Let's make up a borrowck result! Fun times!
143142 let result = BorrowCheckResult {
144- concrete_opaque_types : VecMap :: new ( ) ,
143+ concrete_opaque_types : FxIndexMap :: default ( ) ,
145144 closure_requirements : None ,
146145 used_mut_upvars : SmallVec :: new ( ) ,
147146 tainted_by_errors : None ,
@@ -511,16 +510,11 @@ impl<'cx, 'tcx> BorrowckInferCtxt<'cx, 'tcx> {
511510 . as_var ( )
512511 . unwrap_or_else ( || bug ! ( "expected RegionKind::RegionVar on {:?}" , next_region) ) ;
513512
514- if cfg ! ( debug_assertions) {
513+ if cfg ! ( debug_assertions) && ! self . inside_canonicalization_ctxt ( ) {
515514 debug ! ( "inserting vid {:?} with origin {:?} into var_to_origin" , vid, origin) ;
516515 let ctxt = get_ctxt_fn ( ) ;
517516 let mut var_to_origin = self . reg_var_to_origin . borrow_mut ( ) ;
518- let prev = var_to_origin. insert ( vid, ctxt) ;
519-
520- // This only makes sense if not called in a canonicalization context. If this
521- // ever changes we either want to get rid of `BorrowckInferContext::reg_var_to_origin`
522- // or modify how we track nll region vars for that map.
523- assert ! ( matches!( prev, None ) ) ;
517+ var_to_origin. insert ( vid, ctxt) ;
524518 }
525519
526520 next_region
@@ -540,16 +534,11 @@ impl<'cx, 'tcx> BorrowckInferCtxt<'cx, 'tcx> {
540534 . as_var ( )
541535 . unwrap_or_else ( || bug ! ( "expected RegionKind::RegionVar on {:?}" , next_region) ) ;
542536
543- if cfg ! ( debug_assertions) {
537+ if cfg ! ( debug_assertions) && ! self . inside_canonicalization_ctxt ( ) {
544538 debug ! ( "inserting vid {:?} with origin {:?} into var_to_origin" , vid, origin) ;
545539 let ctxt = get_ctxt_fn ( ) ;
546540 let mut var_to_origin = self . reg_var_to_origin . borrow_mut ( ) ;
547- let prev = var_to_origin. insert ( vid, ctxt) ;
548-
549- // This only makes sense if not called in a canonicalization context. If this
550- // ever changes we either want to get rid of `BorrowckInferContext::reg_var_to_origin`
551- // or modify how we track nll region vars for that map.
552- assert ! ( matches!( prev, None ) ) ;
541+ var_to_origin. insert ( vid, ctxt) ;
553542 }
554543
555544 next_region
0 commit comments