@@ -28,7 +28,6 @@ import std::option;
28
28
import std:: option:: some;
29
29
import std:: option:: none;
30
30
import std:: str;
31
- import std:: vec;
32
31
33
32
export resolve_crate;
34
33
export def_map;
@@ -98,7 +97,7 @@ type glob_imp_def = tup(def, @ast::view_item);
98
97
type indexed_mod =
99
98
rec ( option:: t[ ast:: _mod ] m ,
100
99
mod_index index,
101
- mutable vec [ glob_imp_def] glob_imports ,
100
+ mutable glob_imp_def[ ] glob_imports,
102
101
hashmap[ str, import_state] glob_imported_names) ;
103
102
104
103
@@ -114,7 +113,7 @@ type env =
114
113
ast_map:: map ast_map ,
115
114
hashmap[ ast:: node_id, import_state] imports ,
116
115
hashmap[ ast:: node_id, @indexed_mod] mod_map ,
117
- hashmap[ def_id, vec [ ident] ] ext_map ,
116
+ hashmap[ def_id, ident[ ] ] ext_map ,
118
117
ext_hash ext_cache ,
119
118
session sess) ;
120
119
@@ -134,7 +133,7 @@ fn resolve_crate(session sess, &ast_map::map amap, @ast::crate crate) ->
134
133
ast_map=amap,
135
134
imports=new_int_hash[ import_state] ( ) ,
136
135
mod_map=new_int_hash[ @indexed_mod] ( ) ,
137
- ext_map=new_def_hash[ vec [ ident] ] ( ) ,
136
+ ext_map=new_def_hash[ ident[ ] ] ( ) ,
138
137
ext_cache=new_ext_hash ( ) ,
139
138
sess=sess) ;
140
139
map_crate ( e, crate ) ;
@@ -161,7 +160,7 @@ fn map_crate(&@env e, &@ast::crate c) {
161
160
e. mod_map . insert ( -1 ,
162
161
@rec ( m=some ( c. node . module ) ,
163
162
index=index_mod ( c. node . module ) ,
164
- mutable glob_imports=[ ] ,
163
+ mutable glob_imports=~ [ ] ,
165
164
glob_imported_names=new_str_hash[ import_state] ( ) ) ) ;
166
165
fn index_vi ( @env e , & @ast:: view_item i, & scopes sc, & vt[ scopes] v ) {
167
166
alt ( i. node ) {
@@ -179,15 +178,15 @@ fn map_crate(&@env e, &@ast::crate c) {
179
178
e. mod_map . insert ( i. id ,
180
179
@rec ( m=some ( md) ,
181
180
index=index_mod ( md) ,
182
- mutable glob_imports=[ ] ,
181
+ mutable glob_imports=~ [ ] ,
183
182
glob_imported_names=s) ) ;
184
183
}
185
184
case ( ast:: item_native_mod ( ?nmd) ) {
186
185
auto s = new_str_hash[ import_state] ( ) ;
187
186
e. mod_map . insert ( i. id ,
188
187
@rec ( m=none[ ast:: _mod] ,
189
188
index=index_nmod ( nmd) ,
190
- mutable glob_imports=[ ] ,
189
+ mutable glob_imports=~ [ ] ,
191
190
glob_imported_names=s) ) ;
192
191
}
193
192
case ( _) { }
@@ -224,7 +223,7 @@ fn map_crate(&@env e, &@ast::crate c) {
224
223
auto imp = follow_import ( * e, sc, path, vi. span ) ;
225
224
if ( option:: is_some ( imp) ) {
226
225
find_mod ( e, sc) . glob_imports +=
227
- [ tup ( option:: get ( imp) , vi) ] ;
226
+ ~ [ tup ( option:: get ( imp) , vi) ] ;
228
227
}
229
228
}
230
229
case ( _) { }
@@ -400,14 +399,8 @@ fn resolve_constr(@env e, node_id id, &@ast::constr c, &scopes sc,
400
399
if ( option:: is_some( new_def) ) {
401
400
alt ( option:: get( new_def) ) {
402
401
case ( ast:: def_fn( ?pred_id, ast:: pure_fn) ) {
403
- // FIXME: Remove this vec->ivec conversion.
404
- let ( @ast:: constr_arg_general[ uint] ) [ ] cag_ivec = ~[ ] ;
405
- for ( @ast:: constr_arg_general[ uint] cag in c. node. args) {
406
- cag_ivec += ~[ cag] ;
407
- }
408
-
409
402
let ty:: constr_general[ uint] c_ =
410
- rec( path=c. node. path, args=cag_ivec , id=pred_id) ;
403
+ rec( path=c. node. path, args=c . node . args , id=pred_id) ;
411
404
let ty:: constr_def new_constr = respan( c. span, c_) ;
412
405
add_constr( e, id, new_constr) ;
413
406
}
@@ -886,7 +879,7 @@ fn lookup_in_mod(&env e, &def m, &span sp, &ident name, namespace ns,
886
879
887
880
auto cached = e. ext_cache. find( tup( defid, name, ns) ) ;
888
881
if ( !option:: is_none( cached) ) { ret cached; }
889
- auto path = [ name] ;
882
+ auto path = ~ [ name] ;
890
883
if ( defid. _1 != -1 ) { path = e. ext_map. get( defid) + path; }
891
884
auto fnd = lookup_external( e, defid. _0, path, ns) ;
892
885
if ( !option:: is_none( fnd) ) {
@@ -995,11 +988,11 @@ fn lookup_glob_in_mod(&env e, @indexed_mod info, &span sp, &ident id,
995
988
}
996
989
997
990
auto matches =
998
- vec :: filter_map( bind lookup_in_mod_( e, _, sp, id, ns, dr) ,
999
- { info. glob_imports } ) ;
1000
- if ( vec :: len( matches) == 0 u) {
991
+ ivec :: filter_map( bind lookup_in_mod_( e, _, sp, id, ns, dr) ,
992
+ { info. glob_imports } ) ;
993
+ if ( ivec :: len( matches) == 0 u) {
1001
994
ret none[ def] ;
1002
- } else if ( vec :: len( matches) == 1 u) {
995
+ } else if ( ivec :: len( matches) == 1 u) {
1003
996
ret some[ def] ( matches. ( 0 ) . _0) ;
1004
997
} else {
1005
998
for ( glob_imp_def match in matches) {
@@ -1161,9 +1154,13 @@ fn ns_for_def(def d) -> namespace {
1161
1154
} ;
1162
1155
}
1163
1156
1164
- fn lookup_external ( & env e, int cnum , vec [ ident] ids , namespace ns) ->
1157
+ fn lookup_external ( & env e, int cnum , & ident[ ] ids, namespace ns) ->
1165
1158
option:: t[ def] {
1166
- for ( def d in csearch:: lookup_defs( e. sess. get_cstore( ) , cnum, ids) ) {
1159
+ // FIXME: Remove this ivec->vec conversion.
1160
+ auto ids_vec = [ ] ;
1161
+ for ( ident i in ids ) { ids_vec += [ i] ; }
1162
+
1163
+ for ( def d in csearch:: lookup_defs( e. sess. get_cstore( ) , cnum, ids_vec) ) {
1167
1164
e. ext_map . insert ( ast:: def_id_of_def ( d) , ids) ;
1168
1165
if ( ns == ns_for_def ( d) ) { ret some ( d) ; }
1169
1166
}
@@ -1284,13 +1281,13 @@ fn check_arm(@env e, &ast::arm a, &() x, &vt[()] v) {
1284
1281
walk_pat ( ch, a. pats . ( i) ) ;
1285
1282
// Ensure the bindings introduced in this pattern are the same as in
1286
1283
// the first pattern.
1287
- if ( vec :: len ( ch. seen ) != vec :: len ( seen0) ) {
1284
+ if ( ivec :: len ( ch. seen ) != ivec :: len ( seen0) ) {
1288
1285
e. sess . span_err ( a. pats . ( i) . span ,
1289
1286
"inconsistent number of bindings" ) ;
1290
1287
} else {
1291
1288
for ( ident name in ch. seen) {
1292
- if ( option:: is_none ( vec :: find ( bind str:: eq ( name, _) ,
1293
- seen0) ) ) {
1289
+ if ( option:: is_none ( ivec :: find ( bind str:: eq ( name, _) ,
1290
+ seen0) ) ) {
1294
1291
// Fight the alias checker
1295
1292
auto name_ = name;
1296
1293
e. sess . span_err
@@ -1351,10 +1348,10 @@ fn check_fn(&env e, &span sp, &ast::_fn f) {
1351
1348
ensure_unique_ivec ( e, sp, f. decl . inputs , arg_name, "argument" ) ;
1352
1349
}
1353
1350
1354
- type checker = @rec ( mutable vec [ ident] seen , str kind , session sess) ;
1351
+ type checker = @rec( mutable ident[ ] seen, str kind, session sess) ;
1355
1352
1356
1353
fn checker( & env e, str kind) -> checker {
1357
- let vec [ ident] seen = [ ] ;
1354
+ let ident[ ] seen = ~ [ ] ;
1358
1355
ret @rec( mutable seen=seen, kind=kind, sess=e. sess) ;
1359
1356
}
1360
1357
@@ -1364,12 +1361,12 @@ fn add_name(&checker ch, &span sp, &ident name) {
1364
1361
ch. sess. span_fatal( sp, "duplicate " + ch. kind + " name: " + name) ;
1365
1362
}
1366
1363
}
1367
- vec :: push ( ch. seen , name) ;
1364
+ ch. seen += ~ [ name ] ;
1368
1365
}
1369
1366
1370
1367
fn ident_id ( & ident i) -> ident { ret i ; }
1371
1368
1372
- fn ensure_unique[ T ] ( & env e, & span sp, & vec [ T ] elts, fn ( & T ) -> ident id,
1369
+ fn ensure_unique[ T ] ( & env e, & span sp, & T [ ] elts, fn( & T ) -> ident id,
1373
1370
& str kind) {
1374
1371
auto ch = checker( e, kind) ;
1375
1372
for ( T elt in elts) { add_name( ch, sp, id( elt) ) ; }
0 commit comments