]> git.lizzy.rs Git - rust.git/commitdiff
core: Make range follow the for loop protocol
authorBrian Anderson <banderson@mozilla.com>
Sat, 26 May 2012 07:32:08 +0000 (00:32 -0700)
committerBrian Anderson <banderson@mozilla.com>
Sat, 26 May 2012 09:28:00 +0000 (02:28 -0700)
46 files changed:
src/compiletest/runtest.rs
src/libcore/int-template.rs
src/libcore/priv.rs
src/libcore/rand.rs
src/libcore/uint-template.rs
src/libcore/vec.rs
src/librustsyntax/codemap.rs
src/librustsyntax/ext/qquote.rs
src/libstd/bitv.rs
src/libstd/rope.rs
src/rustc/back/rpath.rs
src/rustc/metadata/encoder.rs
src/rustc/middle/liveness.rs
src/rustc/middle/trans/native.rs
src/rustc/middle/trans/shape.rs
src/rustc/middle/trans/type_use.rs
src/test/auxiliary/cci_class_5.rs
src/test/bench/core-vec-append.rs
src/test/bench/msgsend.rs
src/test/bench/shootout-fasta.rs
src/test/bench/shootout-mandelbrot.rs
src/test/bench/shootout-pfib.rs
src/test/bench/shootout-threadring.rs
src/test/bench/std-smallintmap.rs
src/test/bench/sudoku.rs
src/test/bench/task-perf-vector-party.rs
src/test/compile-fail/borrowck-lend-flow.rs
src/test/compile-fail/issue-1965.rs
src/test/run-fail/unwind-misc-1.rs
src/test/run-pass/class-cast-to-iface-multiple-types.rs
src/test/run-pass/class-impl-parameterized-iface.rs
src/test/run-pass/class-implement-iface-cross-crate.rs
src/test/run-pass/class-implement-ifaces.rs
src/test/run-pass/class-implements-multiple-ifaces.rs
src/test/run-pass/classes-cross-crate.rs
src/test/run-pass/classes.rs
src/test/run-pass/issue-2185.rs
src/test/run-pass/lots-a-fail.rs
src/test/run-pass/move-3-unique.rs
src/test/run-pass/move-3.rs
src/test/run-pass/pattern-bound-var-in-for-each.rs
src/test/run-pass/private-method.rs
src/test/run-pass/rt-circular-buffer.rs
src/test/run-pass/send-iloop.rs
src/test/run-pass/task-comm-chan-cleanup4.rs
src/test/run-pass/unique-send-2.rs

index b86cd334c7983499e2dbdca860134e1d6d4d45ee..0b24ca6c10247678554dfd8e2ac4f39baa71dd01 100644 (file)
@@ -277,7 +277,7 @@ fn check_expected_errors(expected_errors: [errors::expected_error],
         }
     }
 
-    uint::range(0u, vec::len(found_flags)) {|i|
+    for uint::range(0u, vec::len(found_flags)) {|i|
         if !found_flags[i] {
             let ee = expected_errors[i];
             fatal_procres(#fmt["expected %s on line %u not found: %s",
index ac1cc3bbf8b8575c63c6da57eda5f04a81f13f8d..07c3cc9011e280d58fd47146c463d61dd60ba285 100644 (file)
 pure fn is_nonnegative(x: T) -> bool { x >= 0 as T }
 
 #[doc = "Iterate over the range [`lo`..`hi`)"]
-fn range(lo: T, hi: T, it: fn(T)) {
+fn range(lo: T, hi: T, it: fn(T) -> bool) {
     let mut i = lo;
-    while i < hi { it(i); i += 1 as T; }
+    while i < hi {
+        if !it(i) { break }
+        i += 1 as T;
+    }
 }
 
 #[doc = "Computes the bitwise complement"]
index 6fa20ce0804f1f78de456a24bcff3b6f57856a43..d43fc27a019d794c72f126dab1acb2f42c34acbf 100644 (file)
@@ -127,12 +127,12 @@ fn test_from_global_chan2() unsafe {
 
         // Spawn a bunch of tasks that all want to compete to
         // create the global channel
-        uint::range(0u, 10u) {|i|
+        for uint::range(0u, 10u) {|i|
             task::spawn() {||
                 let ch = chan_from_global_ptr(
                     globchanp, task::builder) {|po|
 
-                    uint::range(0u, 10u) {|_j|
+                    for uint::range(0u, 10u) {|_j|
                         let ch = comm::recv(po);
                         comm::send(ch, {i});
                     }
@@ -147,7 +147,7 @@ fn test_from_global_chan2() unsafe {
         }
         // There should be only one winner
         let mut winners = 0u;
-        uint::range(0u, 10u) {|_i|
+        for uint::range(0u, 10u) {|_i|
             let res = comm::recv(resultpo);
             if res { winners += 1u };
         }
index dedcf9916701583557975fae7914aaa7b2fba606..592124767ff905b017cfe94a3dd0f2ab6812a08d 100644 (file)
@@ -202,7 +202,7 @@ fn choose_weighted_option<T:copy>(v: [weighted<T>]) -> option<T> {
     fn weighted_vec<T:copy>(v: [weighted<T>]) -> [T] {
         let mut r = [];
         for v.each {|item|
-            uint::range(0u, item.weight) {|_i|
+            for uint::range(0u, item.weight) {|_i|
                 r += [item.item];
             }
         }
index f9bffe3cc0f0e209d12669ea0d3ccc397d25ebe2..e34fb145336ac10c81bb2c6e3d0abbde4b3c7874 100644 (file)
 pure fn is_nonnegative(x: T) -> bool { x >= 0 as T }
 
 #[doc = "Iterate over the range [`lo`..`hi`)"]
-fn range(lo: T, hi: T, it: fn(T)) {
+fn range(lo: T, hi: T, it: fn(T) -> bool) {
     let mut i = lo;
-    while i < hi { it(i); i += 1 as T; }
+    while i < hi {
+        if !it(i) { break }
+        i += 1 as T;
+    }
 }
 
 #[doc = "Computes the bitwise complement"]
index c72cef85cd137f7c334819c41cec3518db35eb34..fdc8b1ed248a501d3570f3fe385f279a0dac0ddc 100644 (file)
@@ -892,7 +892,7 @@ fn eachi<T>(v: [const T]/&, f: fn(uint, T) -> bool) unsafe {
 #[inline]
 fn iter2<U, T>(v1: [const U], v2: [const T], f: fn(U, T)) {
     assert len(v1) == len(v2);
-    uint::range(0u, len(v1)) {|i|
+    for uint::range(0u, len(v1)) {|i|
         f(v1[i], v2[i])
     }
 }
index 808fb2dffe092bb29a76b4fb5d7b50c31fe1ad0e..259041959d4c7263a9595e676aca1fe71f6398fe 100644 (file)
@@ -183,7 +183,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 mut lines = [];
-    uint::range(lo.line - 1u, hi.line as uint) {|i| lines += [i]; };
+    for uint::range(lo.line - 1u, hi.line as uint) {|i| lines += [i]; };
     ret @{file: lo.file, lines: lines};
 }
 
index 2628be0109cac5dc16135ac4516a6ecade213f19..a6e08439356dd3aadfad372c4d0aaef0bbe171e3 100644 (file)
@@ -193,7 +193,7 @@ fn finish<T: qq_helper>
     let qcx = gather_anti_quotes(sp.lo, node);
     let cx = qcx;
 
-    uint::range(1u, cx.gather.len()) {|i|
+    for uint::range(1u, cx.gather.len()) {|i|
         assert cx.gather[i-1u].lo < cx.gather[i].lo;
         // ^^ check that the vector is sorted
         assert cx.gather[i-1u].hi <= cx.gather[i].lo;
index 4acd7c21451581aaac488839f359df41681851f5..11bf0b4ccb1907fd7bebd8231107cd0511fde225 100644 (file)
@@ -46,7 +46,7 @@ fn process(v0: bitv, v1: bitv, op: fn(uint, uint) -> uint) -> bool {
     assert (vec::len(v0.storage) == len);
     assert (v0.nbits == v1.nbits);
     let mut changed = false;
-    uint::range(0u, len) {|i|
+    for uint::range(0u, len) {|i|
         let w0 = v0.storage[i];
         let w1 = v1.storage[i];
         let w = op(w0, w1);
@@ -90,7 +90,7 @@ fn assign(v0: bitv, v1: bitv) -> bool {
 fn clone(v: bitv) -> bitv {
     let storage = vec::to_mut(vec::from_elem(v.nbits / uint_bits + 1u, 0u));
     let len = vec::len(v.storage);
-    uint::range(0u, len) {|i| storage[i] = v.storage[i]; };
+    for uint::range(0u, len) {|i| storage[i] = v.storage[i]; };
     ret @{storage: storage, nbits: v.nbits};
 }
 
@@ -121,17 +121,17 @@ fn equal(v0: bitv, v1: bitv) -> bool {
 
 #[doc = "Set all bits to 0"]
 fn clear(v: bitv) {
-    uint::range(0u, vec::len(v.storage)) {|i| v.storage[i] = 0u; };
+    for uint::range(0u, vec::len(v.storage)) {|i| v.storage[i] = 0u; };
 }
 
 #[doc = "Set all bits to 1"]
 fn set_all(v: bitv) {
-    uint::range(0u, v.nbits) {|i| set(v, i, true); };
+    for uint::range(0u, v.nbits) {|i| set(v, i, true); };
 }
 
 #[doc = "Invert all bits"]
 fn invert(v: bitv) {
-    uint::range(0u, vec::len(v.storage)) {|i|
+    for uint::range(0u, vec::len(v.storage)) {|i|
         v.storage[i] = !v.storage[i];
     };
 }
index 11158019af8f3e1c043e0db3ff4ec26dc79a7712..56fa619d7552670b45beb4f3c97c5e10691bd1dc 100644 (file)
@@ -158,13 +158,13 @@ fn concat(v: [rope]) -> rope {
     let mut len = vec::len(v);
     if len == 0u { ret node::empty; }
     let ropes = vec::to_mut(vec::from_elem(len, v[0]));
-    uint::range(1u, len) {|i|
+    for uint::range(1u, len) {|i|
        ropes[i] = v[i];
     }
 
     //Merge progresively
     while len > 1u {
-        uint::range(0u, len/2u) {|i|
+        for uint::range(0u, len/2u) {|i|
             ropes[i] = append_rope(ropes[2u*i], ropes[2u*i+1u]);
         }
         if len%2u != 0u {
@@ -1352,19 +1352,19 @@ fn bal1() {
     fn char_at1() {
         //Generate a large rope
         let mut r = of_str(@ "123456789");
-        uint::range(0u, 10u){|_i|
+        for uint::range(0u, 10u){|_i|
             r = append_rope(r, r);
         }
 
         //Copy it in the slowest possible way
         let mut r2 = empty();
-        uint::range(0u, char_len(r)){|i|
+        for uint::range(0u, char_len(r)){|i|
             r2 = append_char(r2, char_at(r, i));
         }
         assert eq(r, r2);
 
         let mut r3 = empty();
-        uint::range(0u, char_len(r)){|i|
+        for uint::range(0u, char_len(r)){|i|
             r3 = prepend_char(r3, char_at(r, char_len(r) - i - 1u));
         }
         assert eq(r, r3);
@@ -1385,7 +1385,7 @@ fn concat1() {
         //Generate a reasonable rope
         let chunk = of_str(@ "123456789");
         let mut r = empty();
-        uint::range(0u, 10u){|_i|
+        for uint::range(0u, 10u){|_i|
             r = append_rope(r, chunk);
         }
 
index a52482d11d24b0bdffecc23432ff952969362b8c..7c5a2edf68f256e2a7d715e49605265345c8e63c 100644 (file)
@@ -137,7 +137,7 @@ fn get_relative_to(abs1: path::path, abs2: path::path) -> path::path {
     }
 
     let mut path = [];
-    uint::range(start_idx, len1 - 1u) {|_i| path += [".."]; };
+    for uint::range(start_idx, len1 - 1u) {|_i| path += [".."]; };
 
     path += vec::slice(split2, start_idx, len2 - 1u);
 
index 56a1371d2895761857690bc770ca8be3c2a4ea9f..5a429f6f7d2d11c14edb651625e1501c1506bc92 100644 (file)
@@ -840,7 +840,7 @@ fn encode_info_for_items(ecx: @encode_ctxt, ebml_w: ebml::writer,
 fn create_index<T: copy>(index: [entry<T>], hash_fn: fn@(T) -> uint) ->
    [@[entry<T>]] {
     let mut buckets: [@mut [entry<T>]] = [];
-    uint::range(0u, 256u) {|_i| buckets += [@mut []]; };
+    for uint::range(0u, 256u) {|_i| buckets += [@mut []]; };
     for index.each {|elt|
         let h = hash_fn(elt.val);
         *buckets[h % 256u] += [elt];
index add1484e190fe2fcc19bb00119cb1b4a9915b57d..9b732d080521e8539c3fd20a9aebe4c9fa787192 100644 (file)
@@ -595,7 +595,7 @@ fn assigned_on_exit(ln: live_node, var: variable)
 
     fn indices(ln: live_node, op: fn(uint)) {
         let node_base_idx = self.idx(ln, variable(0u));
-        uint::range(0u, self.ir.num_vars) { |var_idx|
+        for uint::range(0u, self.ir.num_vars) { |var_idx|
             op(node_base_idx + var_idx)
         }
     }
@@ -604,7 +604,7 @@ fn indices2(ln: live_node, succ_ln: live_node,
                 op: fn(uint, uint)) {
         let node_base_idx = self.idx(ln, variable(0u));
         let succ_base_idx = self.idx(succ_ln, variable(0u));
-        uint::range(0u, self.ir.num_vars) { |var_idx|
+        for uint::range(0u, self.ir.num_vars) { |var_idx|
             op(node_base_idx + var_idx, succ_base_idx + var_idx);
         }
     }
@@ -613,7 +613,7 @@ fn write_vars(wr: io::writer,
                   ln: live_node,
                   test: fn(uint) -> live_node) {
         let node_base_idx = self.idx(ln, variable(0u));
-        uint::range(0u, self.ir.num_vars) { |var_idx|
+        for uint::range(0u, self.ir.num_vars) { |var_idx|
             let idx = node_base_idx + var_idx;
             if test(idx).is_valid() {
                 wr.write_str(" ");
@@ -743,7 +743,7 @@ fn compute(decl: fn_decl, body: blk) -> live_node {
         // hack to skip the loop unless #debug is enabled:
         #debug["^^ liveness computation results for body %d (entry=%s)",
                {
-                   uint::range(0u, self.ir.num_live_nodes) { |ln_idx|
+                   for uint::range(0u, self.ir.num_live_nodes) { |ln_idx|
                        #debug["%s", self.ln_str(live_node(ln_idx))];
                    }
                    body.node.id
index 8c71e89f930a5bf931eef681c13cc45e8aa83f1c..98c5dc567bd483d53e42567216fa93ae92e48154 100644 (file)
@@ -945,7 +945,7 @@ fn build_args(bcx: block, tys: @c_stack_tys,
                 _ {
                     let llretptr = alloca(bcx, tys.ret_ty);
                     let n = vec::len(tys.arg_tys);
-                    uint::range(0u, n) {|i|
+                    for uint::range(0u, n) {|i|
                         let llargval = get_param(llwrapfn, i);
                         store_inbounds(bcx, llargval, llargbundle,
                                                       [0u, i]);
index d5517dc5ee2136d3c20b42b283f559fb946d43a7..931cd891718812319ddb81263ec3b97210b1024d 100644 (file)
@@ -588,7 +588,7 @@ fn gen_enum_shapes(ccx: @crate_ctxt) -> ValueRef {
 fn gen_resource_shapes(ccx: @crate_ctxt) -> ValueRef {
     let mut dtors = [];
     let len = interner::len(ccx.shape_cx.resources);
-    uint::range(0u, len) {|i|
+    for uint::range(0u, len) {|i|
       let ri = interner::get(ccx.shape_cx.resources, i);
       dtors += [trans::base::get_res_dtor(ccx, ri.did, ri.tps)];
     }
index 8c5a0d23b4256f42f1fa1beaa1f7790b4fdbd29f..4d85b6700027b5c1e66881068bc68a4d4d1a7bc2 100644 (file)
@@ -73,7 +73,7 @@ fn type_uses_for(ccx: @crate_ctxt, fn_id: def_id, n_tps: uint)
       }
       ast_map::node_ctor(_, _, ast_map::res_ctor(_, _, _), _) |
       ast_map::node_variant(_, _, _) {
-        uint::range(0u, n_tps) {|n| cx.uses[n] |= use_repr;}
+        for uint::range(0u, n_tps) {|n| cx.uses[n] |= use_repr;}
       }
       ast_map::node_native_item(i@@{node: native_item_fn(_, _), _}, abi, _) {
         if abi == native_abi_rust_intrinsic {
@@ -84,7 +84,7 @@ fn type_uses_for(ccx: @crate_ctxt, fn_id: def_id, n_tps: uint)
               "get_tydesc" | "needs_drop" { use_tydesc }
               "forget" | "addr_of" { 0u }
             };
-            uint::range(0u, n_tps) {|n| cx.uses[n] |= flags;}
+            for uint::range(0u, n_tps) {|n| cx.uses[n] |= flags;}
         }
       }
       ast_map::node_ctor(_, _, ast_map::class_ctor(ctor, _), _){
index dc9339370583f25e0796af430ade4808087baa5f..3fdadcda68d661e0fb2d8dbc05fbc6670f68ad41 100644 (file)
@@ -3,7 +3,7 @@ mod kitties {
 class cat {
   priv {
     let mut meows : uint;
-    fn nap() { uint::range(1u, 10000u) {|_i|}}
+    fn nap() { for uint::range(1u, 10000u) {|_i|}}
   }
 
   let how_hungry : int;
index a1d99563a3ad084db0fe611087f08f46ee8127a4..79fe5eeb1799eaa855e19377c3892b9102d98310 100644 (file)
@@ -6,7 +6,7 @@
 
 fn collect_raw(num: uint) -> [uint] {
     let mut result = [];
-    uint::range(0u, num) { |i|
+    for uint::range(0u, num) { |i|
         result += [i];
     }
     ret result;
@@ -14,7 +14,7 @@ fn collect_raw(num: uint) -> [uint] {
 
 fn collect_dvec(num: uint) -> [mut uint] {
     let result = dvec();
-    uint::range(0u, num) { |i|
+    for uint::range(0u, num) { |i|
         result.push(i);
     }
     ret dvec::unwrap(result);
index f9ff366185346153473133618064693f5ad04a48..aaeb070ce346435307b0083f4bc06fb9c58ef5ef 100644 (file)
@@ -38,11 +38,11 @@ fn run(args: [str]) {
     let start = std::time::precise_time_s();
     let to_child = to_child;
     let mut worker_results = [];
-    uint::range(0u, workers) {|_i|
+    for uint::range(0u, workers) {|_i|
         let builder = task::builder();
         worker_results += [task::future_result(builder)];
         task::run(builder) {||
-            uint::range(0u, size / workers) {|_i|
+            for uint::range(0u, size / workers) {|_i|
                 comm::send(to_child, bytes(100u));
             }
         };
index 053094987c29667e9eec56ae0e4683eff4942b55..0c11a46c67bd45ef00c3b2411992ceee8e2ee1ab 100644 (file)
@@ -46,7 +46,7 @@ fn make_random_fasta(id: str, desc: str, genelist: [aminoacids], n: int) {
     log(debug, ">" + id + " " + desc);
     let rng = @{mut last: std::rand::rng().next()};
     let mut op: str = "";
-    uint::range(0u, n as uint) {|_i|
+    for uint::range(0u, n as uint) {|_i|
         str::push_char(op, select_random(myrandom_next(rng, 100u32),
                                          genelist));
         if str::len(op) >= LINE_LENGTH() {
@@ -61,7 +61,7 @@ fn make_repeat_fasta(id: str, desc: str, s: str, n: int) unsafe {
     log(debug, ">" + id + " " + desc);
     let mut op: str = "";
     let sl: uint = str::len(s);
-    uint::range(0u, n as uint) {|i|
+    for uint::range(0u, n as uint) {|i|
         str::unsafe::push_byte(op, s[i % sl]);
         if str::len(op) >= LINE_LENGTH() {
             log(debug, op);
index e429fa6a1ec4aaf22e0cd039bffb55441d78a2d0..c48e229e4d21f28473721ee0b989e3efd0e84491 100644 (file)
@@ -69,7 +69,7 @@ fn chanmb(i: uint, size: uint, ch: comm::chan<line>) -> ()
     let incr = 2./(size as f64);
     let y = incr*(i as f64) - 1.;
     let xincr = 8.*incr;
-    uint::range(0_u, size/8_u) {
+    for uint::range(0_u, size/8_u) {
         |j|
         let x = {re: xincr*(j as f64) - 1.5, im: y};
         crv += [fillbyte(x, incr)];
@@ -161,7 +161,7 @@ fn main(args: [str]) {
         writer(path, writech, size);
     };
     let ch = comm::recv(writep);
-    uint::range(0_u, size) {|j|
+    for uint::range(0_u, size) {|j|
         task::spawn {|| chanmb(j, size, ch);};
         if j % yieldevery == 0_u {
             #debug("Y %u", j);
index 4df34984b91143c1fc2d17ccc2c8868029ced6a9..bb922c93e612927595ce010bf7cfc56f696e3a0c 100644 (file)
@@ -70,7 +70,7 @@ fn stress_task(&&id: int) {
 
 fn stress(num_tasks: int) {
     let mut results = [];
-    range(0, num_tasks) {|i|
+    for range(0, num_tasks) {|i|
         let builder = task::builder();
         results += [task::future_result(builder)];
         task::run(builder) {|| stress_task(i); }
@@ -99,8 +99,8 @@ fn main(args: [str]) {
 
         let out = io::stdout();
 
-        range(1, max + 1) {|n|
-            range(0, num_trials) {|i|
+        for range(1, max + 1) {|n|
+            for range(0, num_trials) {|i|
                 let start = time::precise_time_ns();
                 let fibn = fib(n);
                 let stop = time::precise_time_ns();
index 73ce1f22be708455cec418a648d7654299799cfc..580a40637483983cce5577c29a45bfca44234e0a 100644 (file)
@@ -8,7 +8,7 @@ fn start(+token: int) {
 
     let p = comm::port();
     let mut ch = comm::chan(p);
-    int::range(2, n_threads + 1) { |i|
+    for int::range(2, n_threads + 1) { |i|
         let id = n_threads + 2 - i;
         let to_child = task::spawn_listener::<int> {|p, copy ch|
             roundtrip(id, p, ch)
index 5080306e4d9312e78048464db6b69b19864c75cd..cd056594ba6ffcbdbc3dac5eb48c5fba8d3f46d6 100644 (file)
@@ -6,13 +6,13 @@
 import io::writer_util;
 
 fn append_sequential(min: uint, max: uint, map: smallintmap<uint>) {
-    uint::range(min, max) { |i|
+    for uint::range(min, max) { |i|
         map.insert(i, i + 22u);
     }
 }
 
 fn check_sequential(min: uint, max: uint, map: smallintmap<uint>) {
-    uint::range(min, max) { |i|
+    for uint::range(min, max) { |i|
         assert map.get(i) == i + 22u;
     }
 }
@@ -31,7 +31,7 @@ fn main(args: [str]) {
     let mut checkf = 0.0;
     let mut appendf = 0.0;
 
-    uint::range(0u, rep) {|_r|
+    for uint::range(0u, rep) {|_r|
         let map = smallintmap::mk();
         let start = std::time::precise_time_s();
         append_sequential(0u, max, map);
index 974c813675100905cf853b10537e93c10477d1da..082b93d2e0c932f1facebcbc55fd0196b73c03cc 100644 (file)
@@ -51,7 +51,7 @@ fn next_color(g: grid, row: u8, col: u8, start_color: u8) -> bool {
         if start_color < 10u8 {
             // colors not yet used
             let avail = bitv::bitv(10u, false);
-            u8::range(start_color, 10u8) { |color|
+            for u8::range(start_color, 10u8) { |color|
                 bitv::set(avail, color as uint, true);
             }
 
@@ -81,7 +81,7 @@ fn drop_color(g: grid, colors: bitv::bitv, row: u8, col: u8) {
 
         let it = bind drop_color(g, avail, _, _);
 
-        u8::range(0u8, 9u8) { |idx|
+        for u8::range(0u8, 9u8) { |idx|
             it(idx, col); /* check same column fields */
             it(row, idx); /* check same row fields */
         }
@@ -89,14 +89,14 @@ fn drop_color(g: grid, colors: bitv::bitv, row: u8, col: u8) {
         // check same block fields
         let row0 = (row / 3u8) * 3u8;
         let col0 = (col / 3u8) * 3u8;
-        u8::range(row0, row0 + 3u8) { |alt_row|
-            u8::range(col0, col0 + 3u8) { |alt_col| it(alt_row, alt_col); }
+        for u8::range(row0, row0 + 3u8) { |alt_row|
+            for u8::range(col0, col0 + 3u8) { |alt_col| it(alt_row, alt_col); }
         }
     }
 
     let mut work: [(u8, u8)] = []; /* queue of uncolored fields */
-    u8::range(0u8, 9u8) { |row|
-        u8::range(0u8, 9u8) { |col|
+    for u8::range(0u8, 9u8) { |row|
+        for u8::range(0u8, 9u8) { |col|
             let color = (*g)[row][col];
             if color == 0u8 { work += [(row, col)]; }
         }
@@ -119,9 +119,9 @@ fn drop_color(g: grid, colors: bitv::bitv, row: u8, col: u8) {
 }
 
 fn write_grid(f: io::writer, g: grid_t) {
-    u8::range(0u8, 9u8) { |row|
+    for u8::range(0u8, 9u8) { |row|
         f.write_str(#fmt("%u", (*g)[row][0] as uint));
-        u8::range(1u8, 9u8) { |col|
+        for u8::range(1u8, 9u8) { |col|
             f.write_str(#fmt(" %u", (*g)[row][col] as uint));
         }
         f.write_char('\n');
index ab684c9a01dcf01e3af3a5d70d2250455da9eba5..ecebd119722020ab15fbd4369505983de89339ea 100644 (file)
@@ -4,7 +4,7 @@
 // allocating and freeing vectors.
 
 fn f(&&n: uint) {
-    uint::range(0u, n) {|i|
+    for uint::range(0u, n) {|i|
         let mut v: [u8] = [];
         vec::reserve(v, 1000u);
     }
@@ -19,5 +19,5 @@ fn main(args: [str]) {
         args
     };
     let n = uint::from_str(args[1]).get();
-    uint::range(0u, 100u) {|i| task::spawn {|| f(n); };}
+    for uint::range(0u, 100u) {|i| task::spawn {|| f(n); };}
 }
index 1effe6401837138f04d9e0d6c30ceb2ea79a8ef3..def99033e5ef902fcb72e2df920690ea6dd3c467 100644 (file)
@@ -65,7 +65,7 @@ fn while_aliased_mut_cond(cond: bool, cond2: bool) {
 fn loop_in_block() {
     let mut v = ~3, w = ~4;
     let mut _x = &mut w;
-    uint::range(0u, 10u) {|_i|
+    for uint::range(0u, 10u) {|_i|
         borrow(v); //! ERROR loan of mutable upvar as immutable conflicts with prior loan
         _x = &mut v; //! NOTE prior loan as mutable granted here
     }
index 7b4bfa74ba3d094ecb52de5ed07c279dc7fa7494..c96fc5273779bb51a28a59ebf64eaf8b115eccdf 100644 (file)
@@ -3,5 +3,5 @@ fn test(-x: uint) {}
 
 fn main() {
     let i = 3u;
-    uint::range(0u, 10u) {|_x| test(i)}
+    for uint::range(0u, 10u) {|_x| test(i)}
 }
\ No newline at end of file
index 34d08570be43b51f2fa6ae4e533fcd657da57977..ad6f9feafc37cc4f569204c3376cf92a5ad5c85d 100644 (file)
@@ -17,7 +17,7 @@ fn eq(&&s: [@str], &&t: [@str]) -> bool {
 
     let map = map::hashmap(hash, eq);
     let mut arr = [];
-    uint::range(0u, 10u) {|i|
+    for uint::range(0u, 10u) {|i|
         arr += [@"key stuff"];
         map.insert(arr, arr + [@"value stuff"]);
     }
index d9129fae8048b5b967791dd82549064f3d4c2dcd..84bc53ac807fea2f8b7855bc153cf8f35cfcb695 100644 (file)
@@ -51,7 +51,7 @@ fn meow_count() -> uint { *self.meows }
 }
 
 fn annoy_neighbors<T: noisy>(critter: T) {
-  uint::range(0u, 10u) {|i| critter.speak(); }
+  for uint::range(0u, 10u) {|i| critter.speak(); }
 }
 
 fn main() {
index 1acce7da7d6df402fd2e4bdbd998b42153401d71..a8a08eabc932fe9e33ac4527a561285d536130bc 100644 (file)
@@ -61,7 +61,7 @@ fn each_value(&&f: fn(&&bool) -> bool) {
 
 fn main() {
   let nyan : cat = cat(0, 2, "nyan");
-  uint::range(1u, 5u) {|_i| nyan.speak(); }
+  for uint::range(1u, 5u) {|_i| nyan.speak(); }
   // cat returns true if uint input is greater than
   // the number of meows so far
   assert(nyan.get(1));
index 7a0cfef53988079eb1735c4e3cdd93fff957d307..62f8cdb39f8da1166f1acaecf32b8e8120255e2e 100644 (file)
@@ -40,6 +40,6 @@ fn main() {
   let nyan = cat(0u, 2, "nyan");
   nyan.eat();
   assert(!nyan.eat());
-  uint::range(1u, 10u, {|_i| nyan.speak(); });
+  for uint::range(1u, 10u) {|_i| nyan.speak(); };
   assert(nyan.eat());
 }
\ No newline at end of file
index e19f06b3b7df62ef7ffcfd76d3d773cb8e5fdcef..0dcf3c8104abb219b6a50080745b5b67efb456c8 100644 (file)
@@ -43,6 +43,6 @@ fn main() {
   let nyan = cat(0u, 2, "nyan");
   nyan.eat();
   assert(!nyan.eat());
-  uint::range(1u, 10u, {|_i| make_speak(nyan); });
+  for uint::range(1u, 10u) {|_i| make_speak(nyan); };
   assert(nyan.eat());
 }
\ No newline at end of file
index 5a238a46ed898bdf7536116a9b2d537abf2b7ebb..44cd125e1963e8f2018bd911d05bf25b58384a06 100644 (file)
@@ -84,7 +84,7 @@ fn bite() -> body_part {
 }
 
 fn annoy_neighbors<T: noisy>(critter: T) {
-  uint::range(0u, 10u) {|i|
+  for uint::range(0u, 10u) {|i|
       let what = critter.speak();
       #debug("%u %d", i, what);
   }
index 3c2efa501e428aef479ceb81168426aeaa23bae1..90407e77678ff02fba1aae2cf2e674f94e48d6f6 100644 (file)
@@ -7,6 +7,6 @@ fn main() {
   let nyan = cat(0u, 2, "nyan");
   nyan.eat();
   assert(!nyan.eat());
-  uint::range(1u, 10u, {|_i| nyan.speak(); });
+  for uint::range(1u, 10u) {|_i| nyan.speak(); };
   assert(nyan.eat());
 }
\ No newline at end of file
index 59a8efcaad791f55cbbcf9dd7950b0c6f0da108e..a8eaca96ac56d00e1beddae04135eea286807047 100644 (file)
@@ -35,6 +35,6 @@ fn main() {
   let nyan = cat(0u, 2, "nyan");
   nyan.eat();
   assert(!nyan.eat());
-  uint::range(1u, 10u, {|_i| nyan.speak(); });
+  for uint::range(1u, 10u) {|_i| nyan.speak(); };
   assert(nyan.eat());
 }
\ No newline at end of file
index eba99e3d86caff9cef4c7591ccce1de73d5daac0..34ad5a1ce3d1c4ded3be6af795db24d37ad90a4d 100644 (file)
@@ -28,8 +28,16 @@ fn foldl<A,B,IA:iterable<A>>(self: IA, +b0: B, blk: fn(B, A) -> B) -> B {
     ret b;
 }
 
+fn range(lo: uint, hi: uint, it: fn(uint)) {
+    let mut i = lo;
+    while i < hi {
+        it(i);
+        i += 1u;
+    }
+}
+
 fn main() {
-    let range = bind uint::range(0u, 1000u, _);
+    let range = bind range(0u, 1000u, _);
     let filt = bind filter(
         range,
         {|&&n: uint| n % 3u != 0u && n % 5u != 0u },
index 99e18ef87dd915f09fcd31273534c3098fdd16c8..820fe715b39ee937bb38846cbe9ed719b752aed7 100644 (file)
@@ -13,7 +13,7 @@ fn iloop() {
 }
 
 fn main() {
-    uint::range(0u, 100u) {|_i|
+    for uint::range(0u, 100u) {|_i|
         let builder = task::builder();
         task::unsupervise(builder);
         task::run(builder) {|| iloop(); };
index f14592a7508df5b9a49ceab5c970bfb11df80549..a642b194aec762a0d8cb9019292160ce9de77529 100644 (file)
@@ -10,7 +10,7 @@ fn test(x: bool, foo: ~{x: int, y: int, z: int}) -> int {
 
 fn main() {
     let x = ~{x: 1, y: 2, z: 3};
-    uint::range(0u, 10000u) {|_i|
+    for uint::range(0u, 10000u) {|_i|
         assert (test(true, x) == 2);
     }
     assert (test(false, x) == 5);
index 3105a80fea1515d3b2517d9263894bd2a062ddb8..2e7c30dcf5dc4b9810bddbede8c2ae39ef9c015e 100644 (file)
@@ -10,7 +10,7 @@ fn test(x: bool, foo: @{x: int, y: int, z: int}) -> int {
 
 fn main() {
     let x = @{x: 1, y: 2, z: 3};
-    uint::range(0u, 10000u) {|i|
+    for uint::range(0u, 10000u) {|i|
         assert (test(true, x) == 2);
     }
     assert (test(false, x) == 5);
index 3ce13edc15e07f7fe5ed0e463a2a17ac091df8c9..a2f008660fd2bf5e0caaf6dac066b04de71891b9 100644 (file)
@@ -6,7 +6,7 @@ fn foo(src: uint) {
 
     alt some(src) {
       some(src_id) {
-        uint::range(0u, 10u) {|i|
+        for uint::range(0u, 10u) {|i|
             let yyy = src_id;
             assert (yyy == 0u);
         }
index fab6bbaf7d985656a3f70d7fb6fe55e42fd09f8d..cb14fd537b8927513c40e1425c2253eff292bf40 100644 (file)
@@ -1,7 +1,7 @@
 class cat {
   priv {
     let mut meows : uint;
-    fn nap() { uint::range(1u, 10u) {|_i|}}
+    fn nap() { for uint::range(1u, 10u) {|_i|}}
   }
 
   let how_hungry : int;
index ed40fec9e771f89236e27900f9ac275275885ed5..b35927529fb57e0a1bb9f4f9b67867d523a3b772 100644 (file)
@@ -32,7 +32,7 @@ fn test_init() {
 fn test_grow() {
     let myport = port();
     let mychan = chan(myport);
-    uint::range(0u, 100u) {|i|
+    for uint::range(0u, 100u) {|i|
         let val: record = {val1: 0u32, val2: 0u32, val3: 0u32};
         comm::send(mychan, val);
     }
@@ -50,11 +50,11 @@ fn test_shrink1() {
 fn test_shrink2() {
     let myport = port();
     let mychan = chan(myport);
-    uint::range(0u, 100u) {|_i|
+    for uint::range(0u, 100u) {|_i|
         let val: record = {val1: 0u32, val2: 0u32, val3: 0u32};
         send(mychan, val);
     }
-    uint::range(0u, 100u) {|_i| let x = recv(myport); }
+    for uint::range(0u, 100u) {|_i| let x = recv(myport); }
 }
 
 
@@ -62,7 +62,7 @@ fn test_shrink2() {
 fn test_rotate() {
     let myport = port();
     let mychan = chan(myport);
-    uint::range(0u, 100u) {|i|
+    for uint::range(0u, 100u) {|i|
         let val = {val1: i as u32, val2: i as u32, val3: i as u32};
         send(mychan, val);
         let x = recv(myport);
@@ -78,13 +78,13 @@ fn test_rotate() {
 fn test_rotate_grow() {
     let myport = port::<record>();
     let mychan = chan(myport);
-    uint::range(0u, 10u) {|j|
-        uint::range(0u, 10u) {|i|
+    for uint::range(0u, 10u) {|j|
+        for uint::range(0u, 10u) {|i|
             let val: record =
                 {val1: i as u32, val2: i as u32, val3: i as u32};
             send(mychan, val);
         }
-        uint::range(0u, 10u) {|i|
+        for uint::range(0u, 10u) {|i|
             let x = recv(myport);
             assert (x.val1 == i as u32);
             assert (x.val2 == i as u32);
index bfd9b477d8e0ac0ef1630dce9f6dc04d3c40ed1d..904eef7a2e8bdc007374c4c138f5e8b96e853202 100644 (file)
@@ -21,7 +21,7 @@ fn iloop() {
 }
 
 fn main() {
-    uint::range(0u, 16u) {|_i|
+    for uint::range(0u, 16u) {|_i|
         let builder = task::builder();
         task::unsupervise(builder);
         task::run(builder) {|| iloop(); }
index 4593c90293a21e7839bb2e10ef720e4ab64fe8f5..7c32b978ae8cf7d93e314ecd749c42a1c814cd8c 100644 (file)
@@ -7,13 +7,13 @@
 // results in the string not being freed
 
 fn starship(&&ch: comm::chan<str>) {
-    int::range(0, 10) { |_i|
+    for int::range(0, 10) { |_i|
         comm::send(ch, "pew pew");
     }
 }
 
 fn starbase() {
-    int::range(0, 10) { |_i|
+    for int::range(0, 10) { |_i|
         let p = comm::port();
         let c = comm::chan(p);
         task::spawn {|| starship(c);};
@@ -22,7 +22,7 @@ fn starbase() {
 }
 
 fn main() {
-    int::range(0, 10) { |_i|
+    for int::range(0, 10) { |_i|
         task::spawn {|| starbase();};
     }
 }
\ No newline at end of file
index 945bf250af29ec8a7bdc895bc8a4821ee6ce8ebb..9fce7de19c43da21db21673473bc35a6446bc1d3 100644 (file)
@@ -12,13 +12,13 @@ fn main() {
     let ch = comm::chan(p);
     let n = 100u;
     let mut expected = 0u;
-    uint::range(0u, n) {|i|
+    for uint::range(0u, n) {|i|
         task::spawn {|| child(ch, i); };
         expected += i;
     }
 
     let mut actual = 0u;
-    uint::range(0u, n) {|_i|
+    for uint::range(0u, n) {|_i|
         let j = comm::recv(p);
         actual += *j;
     }