Skip to content

Commit 6bcb4a4

Browse files
committed
Remove last uses of iterators from stdlib
Issue #1056
1 parent 4ebbbe5 commit 6bcb4a4

File tree

11 files changed

+46
-57
lines changed

11 files changed

+46
-57
lines changed

src/comp/back/rpath.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,7 @@ fn get_relative_to(abs1: fs::path, abs2: fs::path) -> fs::path {
137137

138138
let path = [];
139139

140-
for each _ in uint::range(start_idx, len1 - 1u) {
141-
path += [".."];
142-
}
140+
uint::range(start_idx, len1 - 1u) {|_i| path += [".."]; };
143141

144142
path += vec::slice(split2, start_idx, len2 - 1u);
145143

src/comp/metadata/decoder.rs

Lines changed: 20 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -41,12 +41,12 @@ fn lookup_hash(d: ebml::doc, eq_fn: fn@([u8]) -> bool, hash: uint) ->
4141

4242
let result: [ebml::doc] = [];
4343
let belt = tag_index_buckets_bucket_elt;
44-
for each elt: ebml::doc in ebml::tagged_docs(bucket, belt) {
44+
ebml::tagged_docs(bucket, belt) {|elt|
4545
let pos = ebml::be_uint_from_bytes(elt.data, elt.start, 4u);
4646
if eq_fn(vec::slice::<u8>(*elt.data, elt.start + 4u, elt.end)) {
4747
result += [ebml::doc_at(d.data, pos)];
4848
}
49-
}
49+
};
5050
ret result;
5151
}
5252

@@ -111,7 +111,7 @@ fn item_type(item: ebml::doc, this_cnum: ast::crate_num, tcx: ty::ctxt,
111111
fn item_ty_param_kinds(item: ebml::doc) -> [ast::kind] {
112112
let ks: [ast::kind] = [];
113113
let tp = tag_items_data_item_ty_param_kinds;
114-
for each p: ebml::doc in ebml::tagged_docs(item, tp) {
114+
ebml::tagged_docs(item, tp) {|p|
115115
let dat: [u8] = ebml::doc_data(p);
116116
let vi = ebml::vint_at(dat, 0u);
117117
let i = 0u;
@@ -125,18 +125,18 @@ fn item_ty_param_kinds(item: ebml::doc) -> [ast::kind] {
125125
ks += [k];
126126
i += 1u;
127127
}
128-
}
128+
};
129129
ret ks;
130130
}
131131

132132
fn tag_variant_ids(item: ebml::doc, this_cnum: ast::crate_num) ->
133133
[ast::def_id] {
134134
let ids: [ast::def_id] = [];
135135
let v = tag_items_data_item_variant;
136-
for each p: ebml::doc in ebml::tagged_docs(item, v) {
136+
ebml::tagged_docs(item, v) {|p|
137137
let ext = parse_def_id(ebml::doc_data(p));
138138
ids += [{crate: this_cnum, node: ext.node}];
139-
}
139+
};
140140
ret ids;
141141
}
142142

@@ -300,38 +300,34 @@ fn item_family_to_str(fam: u8) -> str {
300300

301301
fn get_meta_items(md: ebml::doc) -> [@ast::meta_item] {
302302
let items: [@ast::meta_item] = [];
303-
for each meta_item_doc: ebml::doc in
304-
ebml::tagged_docs(md, tag_meta_item_word) {
303+
ebml::tagged_docs(md, tag_meta_item_word) {|meta_item_doc|
305304
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
306305
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
307306
items += [attr::mk_word_item(n)];
308-
}
309-
for each meta_item_doc: ebml::doc in
310-
ebml::tagged_docs(md, tag_meta_item_name_value) {
307+
};
308+
ebml::tagged_docs(md, tag_meta_item_name_value) {|meta_item_doc|
311309
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
312310
let vd = ebml::get_doc(meta_item_doc, tag_meta_item_value);
313311
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
314312
let v = str::unsafe_from_bytes(ebml::doc_data(vd));
315313
// FIXME (#611): Should be able to decode meta_name_value variants,
316314
// but currently they can't be encoded
317315
items += [attr::mk_name_value_item_str(n, v)];
318-
}
319-
for each meta_item_doc: ebml::doc in
320-
ebml::tagged_docs(md, tag_meta_item_list) {
316+
};
317+
ebml::tagged_docs(md, tag_meta_item_list) {|meta_item_doc|
321318
let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
322319
let n = str::unsafe_from_bytes(ebml::doc_data(nd));
323320
let subitems = get_meta_items(meta_item_doc);
324321
items += [attr::mk_list_item(n, subitems)];
325-
}
322+
};
326323
ret items;
327324
}
328325

329326
fn get_attributes(md: ebml::doc) -> [ast::attribute] {
330327
let attrs: [ast::attribute] = [];
331328
alt ebml::maybe_get_doc(md, tag_attributes) {
332329
option::some(attrs_d) {
333-
for each attr_doc: ebml::doc in
334-
ebml::tagged_docs(attrs_d, tag_attribute) {
330+
ebml::tagged_docs(attrs_d, tag_attribute) {|attr_doc|
335331
let meta_items = get_meta_items(attr_doc);
336332
// Currently it's only possible to have a single meta item on
337333
// an attribute
@@ -340,7 +336,7 @@ fn get_attributes(md: ebml::doc) -> [ast::attribute] {
340336
attrs +=
341337
[{node: {style: ast::attr_outer, value: *meta_item},
342338
span: ast_util::dummy_sp()}];
343-
}
339+
};
344340
}
345341
option::none. { }
346342
}
@@ -374,11 +370,11 @@ fn get_crate_deps(data: @[u8]) -> [crate_dep] {
374370
let cratedoc = ebml::new_doc(data);
375371
let depsdoc = ebml::get_doc(cratedoc, tag_crate_deps);
376372
let crate_num = 1;
377-
for each depdoc: ebml::doc in ebml::tagged_docs(depsdoc, tag_crate_dep) {
373+
ebml::tagged_docs(depsdoc, tag_crate_dep) {|depdoc|
378374
let depname = str::unsafe_from_bytes(ebml::doc_data(depdoc));
379375
deps += [{cnum: crate_num, ident: depname}];
380376
crate_num += 1;
381-
}
377+
};
382378
ret deps;
383379
}
384380

@@ -398,18 +394,17 @@ fn list_crate_items(bytes: @[u8], md: ebml::doc, out: io::writer) {
398394
let items = ebml::get_doc(md, tag_items);
399395
let index = ebml::get_doc(paths, tag_index);
400396
let bs = ebml::get_doc(index, tag_index_buckets);
401-
for each bucket: ebml::doc in
402-
ebml::tagged_docs(bs, tag_index_buckets_bucket) {
397+
ebml::tagged_docs(bs, tag_index_buckets_bucket) {|bucket|
403398
let et = tag_index_buckets_bucket_elt;
404-
for each elt: ebml::doc in ebml::tagged_docs(bucket, et) {
399+
ebml::tagged_docs(bucket, et) {|elt|
405400
let data = read_path(elt);
406401
let def = ebml::doc_at(bytes, data.pos);
407402
let did_doc = ebml::get_doc(def, tag_def_id);
408403
let did = parse_def_id(ebml::doc_data(did_doc));
409404
out.write_str(#fmt["%s (%s)\n", data.path,
410405
describe_def(items, did)]);
411-
}
412-
}
406+
};
407+
};
413408
out.write_str("\n");
414409
}
415410

src/comp/metadata/encoder.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -394,7 +394,7 @@ fn encode_info_for_items(ecx: @encode_ctxt, ebml_w: ebml::writer) ->
394394
fn create_index<@T>(index: [entry<T>], hash_fn: fn(T) -> uint) ->
395395
[@[entry<T>]] {
396396
let buckets: [@mutable [entry<T>]] = [];
397-
for each i: uint in uint::range(0u, 256u) { buckets += [@mutable []]; }
397+
uint::range(0u, 256u) {|_i| buckets += [@mutable []]; };
398398
for elt: entry<T> in index {
399399
let h = hash_fn(elt.val);
400400
*buckets[h % 256u] += [elt];

src/comp/middle/trans.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5825,15 +5825,15 @@ fn register_native_fn(ccx: @crate_ctxt, sp: span, path: [str], name: str,
58255825
if uses_retptr { call_args += [bcx.fcx.llretptr]; }
58265826

58275827
let arg_n = 2u;
5828-
for each i: uint in uint::range(0u, num_ty_param) {
5828+
uint::range(0u, num_ty_param) {|_i|
58295829
let llarg = llvm::LLVMGetParam(fcx.llfn, arg_n);
58305830
fcx.lltydescs += [llarg];
58315831
assert (llarg as int != 0);
58325832
if cast_to_i32 {
58335833
call_args += [vp2i(bcx, llarg)];
58345834
} else { call_args += [llarg]; }
58355835
arg_n += 1u;
5836-
}
5836+
};
58375837
fn convert_arg_to_i32(cx: @block_ctxt, v: ValueRef, t: ty::t,
58385838
mode: ty::mode) -> ValueRef {
58395839
if mode == ast::by_ref || mode == ast::by_val {

src/comp/syntax/codemap.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -198,9 +198,7 @@ fn span_to_lines(sp: span, cm: codemap::codemap) -> @file_lines {
198198
let lo = lookup_char_pos(cm, sp.lo);
199199
let hi = lookup_char_pos(cm, sp.hi);
200200
let lines = [];
201-
for each i: uint in uint::range(lo.line - 1u, hi.line as uint) {
202-
lines += [i];
203-
}
201+
uint::range(lo.line - 1u, hi.line as uint) {|i| lines += [i]; };
204202
ret @{name: lo.filename, lines: lines};
205203
}
206204

src/lib/bitv.rs

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -40,12 +40,12 @@ fn process(op: block(uint, uint) -> uint, v0: t, v1: t) -> bool {
4040
assert (vec::len(v0.storage) == len);
4141
assert (v0.nbits == v1.nbits);
4242
let changed = false;
43-
for each i: uint in uint::range(0u, len) {
43+
uint::range(0u, len) {|i|
4444
let w0 = v0.storage[i];
4545
let w1 = v1.storage[i];
4646
let w = op(w0, w1);
4747
if w0 != w { changed = true; v0.storage[i] = w; }
48-
}
48+
};
4949
ret changed;
5050
}
5151

@@ -67,7 +67,7 @@ fn assign(v0: t, v1: t) -> bool { let sub = right; ret process(sub, v0, v1); }
6767
fn clone(v: t) -> t {
6868
let storage = vec::init_elt_mut::<uint>(0u, v.nbits / uint_bits() + 1u);
6969
let len = vec::len(v.storage);
70-
for each i: uint in uint::range(0u, len) { storage[i] = v.storage[i]; }
70+
uint::range(0u, len) {|i| storage[i] = v.storage[i]; };
7171
ret @{storage: storage, nbits: v.nbits};
7272
}
7373

@@ -94,19 +94,17 @@ fn equal(v0: t, v1: t) -> bool {
9494
}
9595

9696
fn clear(v: t) {
97-
for each i: uint in uint::range(0u, vec::len(v.storage)) {
98-
v.storage[i] = 0u;
99-
}
97+
uint::range(0u, vec::len(v.storage)) {|i| v.storage[i] = 0u; };
10098
}
10199

102100
fn set_all(v: t) {
103-
for each i: uint in uint::range(0u, v.nbits) { set(v, i, true); }
101+
uint::range(0u, v.nbits) {|i| set(v, i, true); };
104102
}
105103

106104
fn invert(v: t) {
107-
for each i: uint in uint::range(0u, vec::len(v.storage)) {
105+
uint::range(0u, vec::len(v.storage)) {|i|
108106
v.storage[i] = !v.storage[i];
109-
}
107+
};
110108
}
111109

112110

src/lib/ebml.rs

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -72,25 +72,24 @@ fn get_doc(d: doc, tg: uint) -> doc {
7272
}
7373
}
7474

75-
iter docs(d: doc) -> {tag: uint, doc: doc} {
75+
fn docs(d: doc, it: block(uint, doc)) {
7676
let pos = d.start;
7777
while pos < d.end {
7878
let elt_tag = vint_at(*d.data, pos);
7979
let elt_size = vint_at(*d.data, elt_tag.next);
8080
pos = elt_size.next + elt_size.val;
81-
put {tag: elt_tag.val,
82-
doc: {data: d.data, start: elt_size.next, end: pos}};
81+
it(elt_tag.val, {data: d.data, start: elt_size.next, end: pos});
8382
}
8483
}
8584

86-
iter tagged_docs(d: doc, tg: uint) -> doc {
85+
fn tagged_docs(d: doc, tg: uint, it: block(doc)) {
8786
let pos = d.start;
8887
while pos < d.end {
8988
let elt_tag = vint_at(*d.data, pos);
9089
let elt_size = vint_at(*d.data, elt_tag.next);
9190
pos = elt_size.next + elt_size.val;
9291
if elt_tag.val == tg {
93-
put {data: d.data, start: elt_size.next, end: pos};
92+
it({data: d.data, start: elt_size.next, end: pos});
9493
}
9594
}
9695
}

src/lib/int.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@ fn hash(x: int) -> uint { ret x as uint; }
4343

4444
fn eq_alias(x: int, y: int) -> bool { ret x == y; }
4545

46-
iter range(lo: int, hi: int) -> int {
47-
let lo_: int = lo;
48-
while lo_ < hi { put lo_; lo_ += 1; }
46+
fn range(lo: int, hi: int, it: block(int)) {
47+
while lo < hi { it(lo); lo += 1; }
4948
}
5049

5150
fn parse_buf(buf: [u8], radix: uint) -> int {

src/lib/u8.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,10 @@ pure fn ge(x: u8, y: u8) -> bool { ret x >= y; }
2323

2424
pure fn gt(x: u8, y: u8) -> bool { ret x > y; }
2525

26-
iter range(lo: u8, hi: u8) -> u8 { while lo < hi { put lo; lo += 1u8; } }
26+
fn range(lo: u8, hi: u8, it: block(u8)) {
27+
while lo < hi { it(lo); lo += 1u8; }
28+
}
29+
2730
// Local Variables:
2831
// mode: rust;
2932
// fill-column: 78;

src/lib/uint.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,8 @@ fn max(x: uint, y: uint) -> uint { if x > y { ret x; } ret y; }
4040

4141
fn min(x: uint, y: uint) -> uint { if x > y { ret y; } ret x; }
4242

43-
iter range(lo: uint, hi: uint) -> uint {
44-
let lo_ = lo;
45-
while lo_ < hi { put lo_; lo_ += 1u; }
43+
fn range(lo: uint, hi: uint, it: block(uint)) {
44+
while lo < hi { it(lo); lo += 1u; }
4645
}
4746

4847
fn next_power_of_two(n: uint) -> uint {

src/lib/vec.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -343,9 +343,9 @@ fn eachi<@T>(f: block(T, uint) -> (), v: [mutable? T]) {
343343
}
344344

345345
// Iterate over a list with with the indexes
346-
iter iter2<@T>(v: [T]) -> (uint, T) {
346+
fn iter2<@T>(v: [T], it: block(uint, T)) {
347347
let i = 0u;
348-
for x in v { put (i, x); i += 1u; }
348+
for x in v { it(i, x); i += 1u; }
349349
}
350350

351351
mod unsafe {

0 commit comments

Comments
 (0)