@@ -408,7 +408,10 @@ impl<'tcx> ctxt<'tcx> {
408408 -> & ' tcx ty:: TraitDef < ' tcx > {
409409 let did = def. trait_ref . def_id ;
410410 let interned = self . arenas . trait_defs . alloc ( def) ;
411- self . trait_defs . borrow_mut ( ) . insert ( did, interned) ;
411+ if let Some ( prev) = self . trait_defs . borrow_mut ( ) . insert ( did, interned) {
412+ self . sess . bug ( & format ! ( "Tried to overwrite interned TraitDef: {:?}" ,
413+ prev) )
414+ }
412415 interned
413416 }
414417
@@ -425,7 +428,10 @@ impl<'tcx> ctxt<'tcx> {
425428 let def = ty:: AdtDefData :: new ( self , did, kind, variants) ;
426429 let interned = self . arenas . adt_defs . alloc ( def) ;
427430 // this will need a transmute when reverse-variance is removed
428- self . adt_defs . borrow_mut ( ) . insert ( did, interned) ;
431+ if let Some ( prev) = self . adt_defs . borrow_mut ( ) . insert ( did, interned) {
432+ self . sess . bug ( & format ! ( "Tried to overwrite interned AdtDef: {:?}" ,
433+ prev) )
434+ }
429435 interned
430436 }
431437
@@ -435,13 +441,20 @@ impl<'tcx> ctxt<'tcx> {
435441 }
436442
437443 let interned = self . arenas . stability . alloc ( stab) ;
438- self . stability_interner . borrow_mut ( ) . insert ( interned, interned) ;
444+ if let Some ( prev) = self . stability_interner
445+ . borrow_mut ( )
446+ . insert ( interned, interned) {
447+ self . sess . bug ( & format ! ( "Tried to overwrite interned Stability: {:?}" ,
448+ prev) )
449+ }
439450 interned
440451 }
441452
442453 pub fn store_free_region_map ( & self , id : NodeId , map : FreeRegionMap ) {
443- self . free_region_maps . borrow_mut ( )
444- . insert ( id, map) ;
454+ if self . free_region_maps . borrow_mut ( ) . insert ( id, map) . is_some ( ) {
455+ self . sess . bug ( & format ! ( "Tried to overwrite interned FreeRegionMap for NodeId {:?}" ,
456+ id) )
457+ }
445458 }
446459
447460 pub fn free_region_map ( & self , id : NodeId ) -> FreeRegionMap {
0 commit comments