@@ -37,7 +37,7 @@ pub fn read_crates(sess: Session,
3737 let mut e = Env {
3838 sess : sess,
3939 os : os,
40- crate_cache : @mut ~[ ] ,
40+ crate_cache : @RefCell :: new ( ~[ ] ) ,
4141 next_crate_num : 1 ,
4242 intr : intr
4343 } ;
@@ -48,8 +48,9 @@ pub fn read_crates(sess: Session,
4848 } ;
4949 visit:: walk_crate ( & mut v, crate , ( ) ) ;
5050 }
51- dump_crates ( * e. crate_cache ) ;
52- warn_if_multiple_versions ( & mut e, sess. diagnostic ( ) , * e. crate_cache ) ;
51+ let crate_cache = e. crate_cache . borrow ( ) ;
52+ dump_crates ( * crate_cache. get ( ) ) ;
53+ warn_if_multiple_versions ( & mut e, sess. diagnostic ( ) , * crate_cache. get ( ) ) ;
5354}
5455
5556struct ReadCrateVisitor < ' a > {
@@ -111,7 +112,7 @@ fn warn_if_multiple_versions(e: &mut Env,
111112struct Env {
112113 sess : Session ,
113114 os : loader:: Os ,
114- crate_cache : @mut ~[ cache_entry ] ,
115+ crate_cache : @RefCell < ~[ cache_entry ] > ,
115116 next_crate_num : ast:: CrateNum ,
116117 intr : @ident_interner
117118}
@@ -242,7 +243,8 @@ fn visit_item(e: &Env, i: @ast::item) {
242243}
243244
244245fn existing_match ( e : & Env , name : @str , version : @str , hash : & str ) -> Option < ast:: CrateNum > {
245- for c in e. crate_cache . iter ( ) {
246+ let crate_cache = e. crate_cache . borrow ( ) ;
247+ for c in crate_cache. get ( ) . iter ( ) {
246248 let pkgid_version = match c. pkgid . version {
247249 None => @"0.0 ",
248250 Some ( ref ver) => ver. to_managed ( ) ,
@@ -285,12 +287,15 @@ fn resolve_crate(e: &mut Env,
285287
286288 // Claim this crate number and cache it
287289 let cnum = e. next_crate_num ;
288- e. crate_cache . push ( cache_entry {
289- cnum : cnum,
290- span : span,
291- hash : hash,
292- pkgid : pkgid,
293- } ) ;
290+ {
291+ let mut crate_cache = e. crate_cache . borrow_mut ( ) ;
292+ crate_cache. get ( ) . push ( cache_entry {
293+ cnum : cnum,
294+ span : span,
295+ hash : hash,
296+ pkgid : pkgid,
297+ } ) ;
298+ }
294299 e. next_crate_num += 1 ;
295300
296301 // Now resolve the crates referenced by this crate
0 commit comments