@@ -420,7 +420,7 @@ struct Module {
420420 is_public : bool ,
421421
422422 children : RefCell < HashMap < Name , @NameBindings > > ,
423- imports : @ mut ~[ @ImportDirective ] ,
423+ imports : RefCell < ~[ @ImportDirective ] > ,
424424
425425 // The external module children of this node that were declared with
426426 // `extern mod`.
@@ -470,7 +470,7 @@ impl Module {
470470 kind : Cell :: new ( kind) ,
471471 is_public : is_public,
472472 children : RefCell :: new ( HashMap :: new ( ) ) ,
473- imports : @ mut ~[ ] ,
473+ imports : RefCell :: new ( ~[ ] ) ,
474474 external_module_children : RefCell :: new ( HashMap :: new ( ) ) ,
475475 anonymous_children : RefCell :: new ( HashMap :: new ( ) ) ,
476476 import_resolutions : RefCell :: new ( HashMap :: new ( ) ) ,
@@ -481,8 +481,8 @@ impl Module {
481481 }
482482
483483 fn all_imports_resolved ( & self ) -> bool {
484- let imports = & mut * self . imports ;
485- return imports. len ( ) == self . resolved_import_count . get ( ) ;
484+ let mut imports = self . imports . borrow_mut ( ) ;
485+ return imports. get ( ) . len ( ) == self . resolved_import_count . get ( ) ;
486486 }
487487}
488488
@@ -1951,7 +1951,11 @@ impl Resolver {
19511951 let directive = @ImportDirective :: new ( module_path,
19521952 subclass, span, id,
19531953 is_public) ;
1954- module_. imports . push ( directive) ;
1954+
1955+ {
1956+ let mut imports = module_. imports . borrow_mut ( ) ;
1957+ imports. get ( ) . push ( directive) ;
1958+ }
19551959
19561960 // Bump the reference count on the name. Or, if this is a glob, set
19571961 // the appropriate flag.
@@ -2069,11 +2073,11 @@ impl Resolver {
20692073 return ;
20702074 }
20712075
2072- let imports = & mut * module. imports ;
2073- let import_count = imports. len ( ) ;
2076+ let mut imports = module. imports . borrow_mut ( ) ;
2077+ let import_count = imports. get ( ) . len ( ) ;
20742078 while module. resolved_import_count . get ( ) < import_count {
20752079 let import_index = module. resolved_import_count . get ( ) ;
2076- let import_directive = imports[ import_index] ;
2080+ let import_directive = imports. get ( ) [ import_index] ;
20772081 match self . resolve_import_for_module ( module, import_directive) {
20782082 Failed => {
20792083 // We presumably emitted an error. Continue.
@@ -2149,7 +2153,7 @@ impl Resolver {
21492153 fn resolve_import_for_module(&mut self,
21502154 module_: @Module,
21512155 import_directive: @ImportDirective)
2152- -> ResolveResult<()> {
2156+ -> ResolveResult<()> {
21532157 let mut resolution_result = Failed;
21542158 let module_path = &import_directive.module_path;
21552159
@@ -3230,16 +3234,20 @@ impl Resolver {
32303234
32313235 fn report_unresolved_imports ( & mut self , module_ : @Module ) {
32323236 let index = module_. resolved_import_count . get ( ) ;
3233- let imports : & mut ~ [ @ ImportDirective ] = & mut * module_. imports ;
3234- let import_count = imports. len ( ) ;
3237+ let mut imports = module_. imports . borrow_mut ( ) ;
3238+ let import_count = imports. get ( ) . len ( ) ;
32353239 if index != import_count {
3236- let sn = self . session . codemap . span_to_snippet ( imports[ index] . span ) . unwrap ( ) ;
3240+ let sn = self . session
3241+ . codemap
3242+ . span_to_snippet ( imports. get ( ) [ index] . span )
3243+ . unwrap ( ) ;
32373244 if sn. contains ( "::" ) {
3238- self . resolve_error ( imports[ index] . span , "unresolved import" ) ;
3245+ self . resolve_error ( imports. get ( ) [ index] . span ,
3246+ "unresolved import" ) ;
32393247 } else {
32403248 let err = format ! ( "unresolved import (maybe you meant `{}::*`?)" ,
32413249 sn. slice( 0 , sn. len( ) ) ) ;
3242- self . resolve_error ( imports[ index] . span , err) ;
3250+ self . resolve_error ( imports. get ( ) [ index] . span , err) ;
32433251 }
32443252 }
32453253
0 commit comments