@@ -33,22 +33,29 @@ pub fn read_crates(sess: Session,
33
33
crate : & ast:: Crate ,
34
34
os : loader:: Os ,
35
35
intr : @ident_interner ) {
36
- let e = @ mut Env {
36
+ let mut e = Env {
37
37
sess : sess,
38
38
os : os,
39
39
crate_cache : @mut ~[ ] ,
40
40
next_crate_num : 1 ,
41
41
intr : intr
42
42
} ;
43
- let mut v = ReadCrateVisitor { e : e } ;
44
- visit_crate ( e, crate ) ;
45
- visit:: walk_crate ( & mut v, crate , ( ) ) ;
43
+ visit_crate ( & e, crate ) ;
44
+ {
45
+ let mut v = ReadCrateVisitor {
46
+ e : & mut e
47
+ } ;
48
+ visit:: walk_crate ( & mut v, crate , ( ) ) ;
49
+ }
46
50
dump_crates ( * e. crate_cache ) ;
47
- warn_if_multiple_versions ( e, sess. diagnostic ( ) , * e. crate_cache ) ;
51
+ warn_if_multiple_versions ( & mut e, sess. diagnostic ( ) , * e. crate_cache ) ;
52
+ }
53
+
54
+ struct ReadCrateVisitor < ' a > {
55
+ e : & ' a mut Env ,
48
56
}
49
57
50
- struct ReadCrateVisitor { e : @mut Env }
51
- impl visit:: Visitor < ( ) > for ReadCrateVisitor {
58
+ impl < ' a > visit:: Visitor < ( ) > for ReadCrateVisitor < ' a > {
52
59
fn visit_view_item ( & mut self , a : & ast:: view_item , _: ( ) ) {
53
60
visit_view_item ( self . e , a) ;
54
61
visit:: walk_view_item ( self , a, ( ) ) ;
@@ -76,7 +83,7 @@ fn dump_crates(crate_cache: &[cache_entry]) {
76
83
}
77
84
}
78
85
79
- fn warn_if_multiple_versions ( e : @ mut Env ,
86
+ fn warn_if_multiple_versions ( e : & mut Env ,
80
87
diag : @mut span_handler ,
81
88
crate_cache : & [ cache_entry ] ) {
82
89
if crate_cache. len ( ) != 0 u {
@@ -121,7 +128,7 @@ fn visit_crate(e: &Env, c: &ast::Crate) {
121
128
}
122
129
}
123
130
124
- fn visit_view_item ( e : @ mut Env , i : & ast:: view_item ) {
131
+ fn visit_view_item ( e : & mut Env , i : & ast:: view_item ) {
125
132
match i. node {
126
133
ast:: view_item_extern_mod( ident, path_opt, _, id) => {
127
134
let ident = token:: ident_to_str ( & ident) ;
@@ -248,7 +255,7 @@ fn existing_match(e: &Env, name: @str, version: @str, hash: &str) -> Option<ast:
248
255
None
249
256
}
250
257
251
- fn resolve_crate ( e : @ mut Env ,
258
+ fn resolve_crate ( e : & mut Env ,
252
259
ident : @str ,
253
260
name : @str ,
254
261
version : @str ,
@@ -311,7 +318,7 @@ fn resolve_crate(e: @mut Env,
311
318
}
312
319
313
320
// Go through the crate metadata and load any crates that it references
314
- fn resolve_crate_deps ( e : @ mut Env , cdata : & [ u8 ] ) -> cstore:: cnum_map {
321
+ fn resolve_crate_deps ( e : & mut Env , cdata : & [ u8 ] ) -> cstore:: cnum_map {
315
322
debug ! ( "resolving deps of external crate" ) ;
316
323
// The map from crate numbers in the crate we're resolving to local crate
317
324
// numbers
0 commit comments