]> git.lizzy.rs Git - rust.git/commitdiff
Remove last uses of iterators from stdlib
authorMarijn Haverbeke <marijnh@gmail.com>
Fri, 21 Oct 2011 10:31:48 +0000 (12:31 +0200)
committerMarijn Haverbeke <marijnh@gmail.com>
Fri, 21 Oct 2011 10:31:48 +0000 (12:31 +0200)
Issue #1056

src/comp/back/rpath.rs
src/comp/metadata/decoder.rs
src/comp/metadata/encoder.rs
src/comp/middle/trans.rs
src/comp/syntax/codemap.rs
src/lib/bitv.rs
src/lib/ebml.rs
src/lib/int.rs
src/lib/u8.rs
src/lib/uint.rs
src/lib/vec.rs

index fcf76e6e423b75530497e92a1f907c1ffc95d371..2098e7343978bf883778a3b759164b3b49a668b6 100644 (file)
@@ -137,9 +137,7 @@ fn get_relative_to(abs1: fs::path, abs2: fs::path) -> fs::path {
 
     let path = [];
 
-    for each _ in uint::range(start_idx, len1 - 1u) {
-        path += [".."];
-    }
+    uint::range(start_idx, len1 - 1u) {|_i| path += [".."]; };
 
     path += vec::slice(split2, start_idx, len2 - 1u);
 
index fe97845a4483d2825a85f4068f31225dcfb6b12d..12ec6ed8860a45210d86af5229cafa888e3fb9a8 100644 (file)
@@ -41,12 +41,12 @@ fn lookup_hash(d: ebml::doc, eq_fn: fn@([u8]) -> bool, hash: uint) ->
 
     let result: [ebml::doc] = [];
     let belt = tag_index_buckets_bucket_elt;
-    for each elt: ebml::doc in ebml::tagged_docs(bucket, belt) {
+    ebml::tagged_docs(bucket, belt) {|elt|
         let pos = ebml::be_uint_from_bytes(elt.data, elt.start, 4u);
         if eq_fn(vec::slice::<u8>(*elt.data, elt.start + 4u, elt.end)) {
             result += [ebml::doc_at(d.data, pos)];
         }
-    }
+    };
     ret result;
 }
 
@@ -111,7 +111,7 @@ fn parse_external_def_id(this_cnum: ast::crate_num,
 fn item_ty_param_kinds(item: ebml::doc) -> [ast::kind] {
     let ks: [ast::kind] = [];
     let tp = tag_items_data_item_ty_param_kinds;
-    for each p: ebml::doc in ebml::tagged_docs(item, tp) {
+    ebml::tagged_docs(item, tp) {|p|
         let dat: [u8] = ebml::doc_data(p);
         let vi = ebml::vint_at(dat, 0u);
         let i = 0u;
@@ -125,7 +125,7 @@ fn item_ty_param_kinds(item: ebml::doc) -> [ast::kind] {
             ks += [k];
             i += 1u;
         }
-    }
+    };
     ret ks;
 }
 
@@ -133,10 +133,10 @@ fn tag_variant_ids(item: ebml::doc, this_cnum: ast::crate_num) ->
    [ast::def_id] {
     let ids: [ast::def_id] = [];
     let v = tag_items_data_item_variant;
-    for each p: ebml::doc in ebml::tagged_docs(item, v) {
+    ebml::tagged_docs(item, v) {|p|
         let ext = parse_def_id(ebml::doc_data(p));
         ids += [{crate: this_cnum, node: ext.node}];
-    }
+    };
     ret ids;
 }
 
@@ -300,14 +300,12 @@ fn item_family_to_str(fam: u8) -> str {
 
 fn get_meta_items(md: ebml::doc) -> [@ast::meta_item] {
     let items: [@ast::meta_item] = [];
-    for each meta_item_doc: ebml::doc in
-             ebml::tagged_docs(md, tag_meta_item_word) {
+    ebml::tagged_docs(md, tag_meta_item_word) {|meta_item_doc|
         let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
         let n = str::unsafe_from_bytes(ebml::doc_data(nd));
         items += [attr::mk_word_item(n)];
-    }
-    for each meta_item_doc: ebml::doc in
-             ebml::tagged_docs(md, tag_meta_item_name_value) {
+    };
+    ebml::tagged_docs(md, tag_meta_item_name_value) {|meta_item_doc|
         let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
         let vd = ebml::get_doc(meta_item_doc, tag_meta_item_value);
         let n = str::unsafe_from_bytes(ebml::doc_data(nd));
@@ -315,14 +313,13 @@ fn get_meta_items(md: ebml::doc) -> [@ast::meta_item] {
         // FIXME (#611): Should be able to decode meta_name_value variants,
         // but currently they can't be encoded
         items += [attr::mk_name_value_item_str(n, v)];
-    }
-    for each meta_item_doc: ebml::doc in
-             ebml::tagged_docs(md, tag_meta_item_list) {
+    };
+    ebml::tagged_docs(md, tag_meta_item_list) {|meta_item_doc|
         let nd = ebml::get_doc(meta_item_doc, tag_meta_item_name);
         let n = str::unsafe_from_bytes(ebml::doc_data(nd));
         let subitems = get_meta_items(meta_item_doc);
         items += [attr::mk_list_item(n, subitems)];
-    }
+    };
     ret items;
 }
 
@@ -330,8 +327,7 @@ fn get_attributes(md: ebml::doc) -> [ast::attribute] {
     let attrs: [ast::attribute] = [];
     alt ebml::maybe_get_doc(md, tag_attributes) {
       option::some(attrs_d) {
-        for each attr_doc: ebml::doc in
-                 ebml::tagged_docs(attrs_d, tag_attribute) {
+        ebml::tagged_docs(attrs_d, tag_attribute) {|attr_doc|
             let meta_items = get_meta_items(attr_doc);
             // Currently it's only possible to have a single meta item on
             // an attribute
@@ -340,7 +336,7 @@ fn get_attributes(md: ebml::doc) -> [ast::attribute] {
             attrs +=
                 [{node: {style: ast::attr_outer, value: *meta_item},
                   span: ast_util::dummy_sp()}];
-        }
+        };
       }
       option::none. { }
     }
@@ -374,11 +370,11 @@ fn get_crate_deps(data: @[u8]) -> [crate_dep] {
     let cratedoc = ebml::new_doc(data);
     let depsdoc = ebml::get_doc(cratedoc, tag_crate_deps);
     let crate_num = 1;
-    for each depdoc: ebml::doc in ebml::tagged_docs(depsdoc, tag_crate_dep) {
+    ebml::tagged_docs(depsdoc, tag_crate_dep) {|depdoc|
         let depname = str::unsafe_from_bytes(ebml::doc_data(depdoc));
         deps += [{cnum: crate_num, ident: depname}];
         crate_num += 1;
-    }
+    };
     ret deps;
 }
 
@@ -398,18 +394,17 @@ fn list_crate_items(bytes: @[u8], md: ebml::doc, out: io::writer) {
     let items = ebml::get_doc(md, tag_items);
     let index = ebml::get_doc(paths, tag_index);
     let bs = ebml::get_doc(index, tag_index_buckets);
-    for each bucket: ebml::doc in
-             ebml::tagged_docs(bs, tag_index_buckets_bucket) {
+    ebml::tagged_docs(bs, tag_index_buckets_bucket) {|bucket|
         let et = tag_index_buckets_bucket_elt;
-        for each elt: ebml::doc in ebml::tagged_docs(bucket, et) {
+        ebml::tagged_docs(bucket, et) {|elt|
             let data = read_path(elt);
             let def = ebml::doc_at(bytes, data.pos);
             let did_doc = ebml::get_doc(def, tag_def_id);
             let did = parse_def_id(ebml::doc_data(did_doc));
             out.write_str(#fmt["%s (%s)\n", data.path,
                                describe_def(items, did)]);
-        }
-    }
+        };
+    };
     out.write_str("\n");
 }
 
index f392d2367e4d57a154149867fefe9dcad784be63..96a4edb017ccc839430b6ea7cec13f233d7547ce 100644 (file)
@@ -394,7 +394,7 @@ fn encode_info_for_items(ecx: @encode_ctxt, ebml_w: ebml::writer) ->
 fn create_index<@T>(index: [entry<T>], hash_fn: fn(T) -> uint) ->
    [@[entry<T>]] {
     let buckets: [@mutable [entry<T>]] = [];
-    for each i: uint in uint::range(0u, 256u) { buckets += [@mutable []]; }
+    uint::range(0u, 256u) {|_i| buckets += [@mutable []]; };
     for elt: entry<T> in index {
         let h = hash_fn(elt.val);
         *buckets[h % 256u] += [elt];
index 87ddd1df14511dc392bd5f7083cceb38e1f9e987..d9aa57fce2a634980b9953cc11d4b362d097d886 100644 (file)
@@ -5825,7 +5825,7 @@ fn register_native_fn(ccx: @crate_ctxt, sp: span, path: [str], name: str,
     if uses_retptr { call_args += [bcx.fcx.llretptr]; }
 
     let arg_n = 2u;
-    for each i: uint in uint::range(0u, num_ty_param) {
+    uint::range(0u, num_ty_param) {|_i|
         let llarg = llvm::LLVMGetParam(fcx.llfn, arg_n);
         fcx.lltydescs += [llarg];
         assert (llarg as int != 0);
@@ -5833,7 +5833,7 @@ fn register_native_fn(ccx: @crate_ctxt, sp: span, path: [str], name: str,
             call_args += [vp2i(bcx, llarg)];
         } else { call_args += [llarg]; }
         arg_n += 1u;
-    }
+    };
     fn convert_arg_to_i32(cx: @block_ctxt, v: ValueRef, t: ty::t,
                           mode: ty::mode) -> ValueRef {
         if mode == ast::by_ref || mode == ast::by_val {
index 33b996093419501dcb2c0bc1651a11ed197500c4..e3a02da9e54f8eb8a08779d92057a79ad50ed7ed 100644 (file)
@@ -198,9 +198,7 @@ fn span_to_lines(sp: span, cm: codemap::codemap) -> @file_lines {
     let lo = lookup_char_pos(cm, sp.lo);
     let hi = lookup_char_pos(cm, sp.hi);
     let lines = [];
-    for each i: uint in uint::range(lo.line - 1u, hi.line as uint) {
-        lines += [i];
-    }
+    uint::range(lo.line - 1u, hi.line as uint) {|i| lines += [i]; };
     ret @{name: lo.filename, lines: lines};
 }
 
index e47c72f1028a70041260fc6e61bbe01ec82aad22..4bbd4118d323fb46b73338db70c085bea6f35804 100644 (file)
@@ -40,12 +40,12 @@ fn process(op: block(uint, uint) -> uint, v0: t, v1: t) -> bool {
     assert (vec::len(v0.storage) == len);
     assert (v0.nbits == v1.nbits);
     let changed = false;
-    for each i: uint in uint::range(0u, len) {
+    uint::range(0u, len) {|i|
         let w0 = v0.storage[i];
         let w1 = v1.storage[i];
         let w = op(w0, w1);
         if w0 != w { changed = true; v0.storage[i] = w; }
-    }
+    };
     ret changed;
 }
 
@@ -67,7 +67,7 @@ fn intersect(v0: t, v1: t) -> bool {
 fn clone(v: t) -> t {
     let storage = vec::init_elt_mut::<uint>(0u, v.nbits / uint_bits() + 1u);
     let len = vec::len(v.storage);
-    for each i: uint in uint::range(0u, len) { storage[i] = v.storage[i]; }
+    uint::range(0u, len) {|i| storage[i] = v.storage[i]; };
     ret @{storage: storage, nbits: v.nbits};
 }
 
@@ -94,19 +94,17 @@ fn equal(v0: t, v1: t) -> bool {
 }
 
 fn clear(v: t) {
-    for each i: uint in uint::range(0u, vec::len(v.storage)) {
-        v.storage[i] = 0u;
-    }
+    uint::range(0u, vec::len(v.storage)) {|i| v.storage[i] = 0u; };
 }
 
 fn set_all(v: t) {
-    for each i: uint in uint::range(0u, v.nbits) { set(v, i, true); }
+    uint::range(0u, v.nbits) {|i| set(v, i, true); };
 }
 
 fn invert(v: t) {
-    for each i: uint in uint::range(0u, vec::len(v.storage)) {
+    uint::range(0u, vec::len(v.storage)) {|i|
         v.storage[i] = !v.storage[i];
-    }
+    };
 }
 
 
index 0b3ee5730da3b6754ee84987d8f3648a7a01284a..4a49dd473f402882d60363abf2c18a2e8a9efd14 100644 (file)
@@ -72,25 +72,24 @@ fn get_doc(d: doc, tg: uint) -> doc {
     }
 }
 
-iter docs(d: doc) -> {tag: uint, doc: doc} {
+fn docs(d: doc, it: block(uint, doc)) {
     let pos = d.start;
     while pos < d.end {
         let elt_tag = vint_at(*d.data, pos);
         let elt_size = vint_at(*d.data, elt_tag.next);
         pos = elt_size.next + elt_size.val;
-        put {tag: elt_tag.val,
-             doc: {data: d.data, start: elt_size.next, end: pos}};
+        it(elt_tag.val, {data: d.data, start: elt_size.next, end: pos});
     }
 }
 
-iter tagged_docs(d: doc, tg: uint) -> doc {
+fn tagged_docs(d: doc, tg: uint, it: block(doc)) {
     let pos = d.start;
     while pos < d.end {
         let elt_tag = vint_at(*d.data, pos);
         let elt_size = vint_at(*d.data, elt_tag.next);
         pos = elt_size.next + elt_size.val;
         if elt_tag.val == tg {
-            put {data: d.data, start: elt_size.next, end: pos};
+            it({data: d.data, start: elt_size.next, end: pos});
         }
     }
 }
index 4b420d96c27a230ccdc443c0b342eb1c9f18d61b..7b08b1d8df3d282889e80dddbab8e77b18d04ca6 100644 (file)
@@ -43,9 +43,8 @@ fn min_value() -> int {
 
 fn eq_alias(x: int, y: int) -> bool { ret x == y; }
 
-iter range(lo: int, hi: int) -> int {
-    let lo_: int = lo;
-    while lo_ < hi { put lo_; lo_ += 1; }
+fn range(lo: int, hi: int, it: block(int)) {
+    while lo < hi { it(lo); lo += 1; }
 }
 
 fn parse_buf(buf: [u8], radix: uint) -> int {
index d70cb8a4f83199a0da9300fcf060ab3bf8884ff0..b7995a7d97905a10b09e2089a23330f86516a0e9 100644 (file)
 
 pure fn gt(x: u8, y: u8) -> bool { ret x > y; }
 
-iter range(lo: u8, hi: u8) -> u8 { while lo < hi { put lo; lo += 1u8; } }
+fn range(lo: u8, hi: u8, it: block(u8)) {
+    while lo < hi { it(lo); lo += 1u8; }
+}
+
 // Local Variables:
 // mode: rust;
 // fill-column: 78;
index 84b6bc5b1e07e9a31b44424ad7a2a1f387d34693..7c93ee7fc72ccf10a81731a342db3b4879038e3a 100644 (file)
@@ -40,9 +40,8 @@
 
 fn min(x: uint, y: uint) -> uint { if x > y { ret y; } ret x; }
 
-iter range(lo: uint, hi: uint) -> uint {
-    let lo_ = lo;
-    while lo_ < hi { put lo_; lo_ += 1u; }
+fn range(lo: uint, hi: uint, it: block(uint)) {
+    while lo < hi { it(lo); lo += 1u; }
 }
 
 fn next_power_of_two(n: uint) -> uint {
index e5b1e33ac8a11157a6dc9f3d657317da48fd390b..af3e31fafed47c30eaa7d6522b6bb52c66070a43 100644 (file)
@@ -343,9 +343,9 @@ fn eachi<@T>(f: block(T, uint) -> (), v: [mutable? T]) {
 }
 
 // Iterate over a list with with the indexes
-iter iter2<@T>(v: [T]) -> (uint, T) {
+fn iter2<@T>(v: [T], it: block(uint, T)) {
     let i = 0u;
-    for x in v { put (i, x); i += 1u; }
+    for x in v { it(i, x); i += 1u; }
 }
 
 mod unsafe {