@@ -412,15 +412,16 @@ impl CoherenceChecker {
412412 let mut trait_impls = tcx. trait_impls . borrow_mut ( ) ;
413413 match trait_impls. get ( ) . find ( & base_def_id) {
414414 None => {
415- implementation_list = @mut ~[ ] ;
415+ implementation_list = @RefCell :: new ( ~[ ] ) ;
416416 trait_impls. get ( ) . insert ( base_def_id, implementation_list) ;
417417 }
418418 Some ( & existing_implementation_list) => {
419419 implementation_list = existing_implementation_list;
420420 }
421421 }
422422
423- implementation_list. push ( implementation) ;
423+ let mut implementation_list = implementation_list. borrow_mut ( ) ;
424+ implementation_list. get ( ) . push ( implementation) ;
424425 }
425426
426427 pub fn check_implementation_coherence ( & self ) {
@@ -467,7 +468,8 @@ impl CoherenceChecker {
467468 let trait_impls = self . crate_context . tcx . trait_impls . borrow ( ) ;
468469 match trait_impls. get ( ) . find ( & trait_def_id) {
469470 Some ( impls) => {
470- for & im in impls. iter ( ) {
471+ let impls = impls. borrow ( ) ;
472+ for & im in impls. get ( ) . iter ( ) {
471473 f ( im) ;
472474 }
473475 }
@@ -708,7 +710,8 @@ impl CoherenceChecker {
708710 Some ( found_impls) => impls = found_impls
709711 }
710712
711- for impl_info in impls. iter ( ) {
713+ let impls = impls. borrow ( ) ;
714+ for impl_info in impls. get ( ) . iter ( ) {
712715 if impl_info. methods . len ( ) < 1 {
713716 // We'll error out later. For now, just don't ICE.
714717 continue ;
0 commit comments