about summary refs log tree commit diff
path: root/src/libextra
diff options
context:
space:
mode:
authorDaniel Micay <danielmicay@gmail.com>2013-08-03 12:45:23 -0400
committerDaniel Micay <danielmicay@gmail.com>2013-08-03 22:48:02 -0400
commit10089455287dcc3652b984ab4bfd6971e1b5f302 (patch)
treea9570eacf4ff89a1f14b7380c080af77918589f6 /src/libextra
parent9f74217d80290d1cb36afcaf68a566b4b4907d27 (diff)
downloadrust-10089455287dcc3652b984ab4bfd6971e1b5f302.tar.gz
rust-10089455287dcc3652b984ab4bfd6971e1b5f302.zip
remove obsolete `foreach` keyword
this has been replaced by `for`
Diffstat (limited to 'src/libextra')
-rw-r--r--src/libextra/arc.rs6
-rw-r--r--src/libextra/arena.rs4
-rw-r--r--src/libextra/base64.rs2
-rw-r--r--src/libextra/bitv.rs42
-rw-r--r--src/libextra/container.rs8
-rw-r--r--src/libextra/crypto/digest.rs2
-rw-r--r--src/libextra/crypto/sha1.rs4
-rw-r--r--src/libextra/crypto/sha2.rs4
-rw-r--r--src/libextra/dlist.rs18
-rw-r--r--src/libextra/fileinput.rs16
-rw-r--r--src/libextra/flatpipes.rs20
-rw-r--r--src/libextra/getopts.rs10
-rw-r--r--src/libextra/iter.rs2
-rw-r--r--src/libextra/json.rs20
-rw-r--r--src/libextra/num/bigint.rs56
-rw-r--r--src/libextra/num/complex.rs16
-rw-r--r--src/libextra/num/rational.rs4
-rw-r--r--src/libextra/priority_queue.rs6
-rw-r--r--src/libextra/ringbuf.rs36
-rw-r--r--src/libextra/serialize.rs36
-rw-r--r--src/libextra/smallintmap.rs12
-rw-r--r--src/libextra/sort.rs16
-rw-r--r--src/libextra/stats.rs4
-rw-r--r--src/libextra/sync.rs12
-rw-r--r--src/libextra/task_pool.rs2
-rw-r--r--src/libextra/tempfile.rs2
-rw-r--r--src/libextra/terminfo/parm.rs10
-rw-r--r--src/libextra/terminfo/parser/compiled.rs8
-rw-r--r--src/libextra/terminfo/searcher.rs4
-rw-r--r--src/libextra/test.rs24
-rw-r--r--src/libextra/time.rs10
-rw-r--r--src/libextra/treemap.rs40
-rw-r--r--src/libextra/url.rs14
-rw-r--r--src/libextra/workcache.rs2
34 files changed, 236 insertions, 236 deletions
diff --git a/src/libextra/arc.rs b/src/libextra/arc.rs
index af69997f02e..cb4468f48ec 100644
--- a/src/libextra/arc.rs
+++ b/src/libextra/arc.rs
@@ -782,7 +782,7 @@ mod tests {
         }
 
         // Wait for children to pass their asserts
-        foreach r in children.iter() {
+        for r in children.iter() {
             r.recv();
         }
 
@@ -848,7 +848,7 @@ mod tests {
                 *state = 31337;
                 // FIXME: #7372: hits type inference bug with iterators
                 // send to other readers
-                foreach i in range(0u, reader_convos.len()) {
+                for i in range(0u, reader_convos.len()) {
                     match reader_convos[i] {
                         (ref rc, _) => rc.send(()),
                     }
@@ -858,7 +858,7 @@ mod tests {
             do (&read_mode).read |state| {
                 // FIXME: #7372: hits type inference bug with iterators
                 // complete handshake with other readers
-                foreach i in range(0u, reader_convos.len()) {
+                for i in range(0u, reader_convos.len()) {
                     match reader_convos[i] {
                         (_, ref rp) => rp.recv(),
                     }
diff --git a/src/libextra/arena.rs b/src/libextra/arena.rs
index 0f54a9effa2..47b64d76951 100644
--- a/src/libextra/arena.rs
+++ b/src/libextra/arena.rs
@@ -277,7 +277,7 @@ impl Arena {
 #[test]
 fn test_arena_destructors() {
     let arena = Arena();
-    foreach i in range(0u, 10) {
+    for i in range(0u, 10) {
         // Arena allocate something with drop glue to make sure it
         // doesn't leak.
         do arena.alloc { @i };
@@ -293,7 +293,7 @@ fn test_arena_destructors() {
 fn test_arena_destructors_fail() {
     let arena = Arena();
     // Put some stuff in the arena.
-    foreach i in range(0u, 10) {
+    for i in range(0u, 10) {
         // Arena allocate something with drop glue to make sure it
         // doesn't leak.
         do arena.alloc { @i };
diff --git a/src/libextra/base64.rs b/src/libextra/base64.rs
index 5d5311d2329..f2cbcf86935 100644
--- a/src/libextra/base64.rs
+++ b/src/libextra/base64.rs
@@ -206,7 +206,7 @@ impl<'self> FromBase64 for &'self [u8] {
         let mut modulus = 0;
 
         let mut it = self.iter();
-        foreach &byte in it {
+        for &byte in it {
             let ch = byte as char;
             let val = byte as u32;
 
diff --git a/src/libextra/bitv.rs b/src/libextra/bitv.rs
index 42f3fdc5279..bf618d7bd3a 100644
--- a/src/libextra/bitv.rs
+++ b/src/libextra/bitv.rs
@@ -145,7 +145,7 @@ impl BigBitv {
         let len = b.storage.len();
         assert_eq!(self.storage.len(), len);
         let mut changed = false;
-        foreach i in range(0, len) {
+        for i in range(0, len) {
             let mask = big_mask(nbits, i);
             let w0 = self.storage[i] & mask;
             let w1 = b.storage[i] & mask;
@@ -401,7 +401,7 @@ impl Bitv {
       match self.rep {
         Small(ref b) => b.is_true(self.nbits),
         _ => {
-          foreach i in self.iter() { if !i { return false; } }
+          for i in self.iter() { if !i { return false; } }
           true
         }
       }
@@ -422,7 +422,7 @@ impl Bitv {
       match self.rep {
         Small(ref b) => b.is_false(self.nbits),
         Big(_) => {
-          foreach i in self.iter() { if i { return false; } }
+          for i in self.iter() { if i { return false; } }
           true
         }
       }
@@ -486,7 +486,7 @@ impl Bitv {
      */
      pub fn to_str(&self) -> ~str {
         let mut rs = ~"";
-        foreach i in self.iter() {
+        for i in self.iter() {
             if i {
                 rs.push_char('1');
             } else {
@@ -544,7 +544,7 @@ pub fn from_bools(bools: &[bool]) -> Bitv {
  */
 pub fn from_fn(len: uint, f: &fn(index: uint) -> bool) -> Bitv {
     let mut bitv = Bitv::new(len, false);
-    foreach i in range(0u, len) {
+    for i in range(0u, len) {
         bitv.set(i, f(i));
     }
     bitv
@@ -561,7 +561,7 @@ fn iterate_bits(base: uint, bits: uint, f: &fn(uint) -> bool) -> bool {
     if bits == 0 {
         return true;
     }
-    foreach i in range(0u, uint::bits) {
+    for i in range(0u, uint::bits) {
         if bits & (1 << i) != 0 {
             if !f(base + i) {
                 return false;
@@ -676,7 +676,7 @@ impl BitvSet {
     fn other_op(&mut self, other: &BitvSet, f: &fn(uint, uint) -> uint) {
         fn nbits(mut w: uint) -> uint {
             let mut bits = 0;
-            foreach _ in range(0u, uint::bits) {
+            for _ in range(0u, uint::bits) {
                 if w == 0 {
                     break;
                 }
@@ -688,7 +688,7 @@ impl BitvSet {
         if self.capacity() < other.capacity() {
             self.bitv.storage.grow(other.capacity() / uint::bits, &0);
         }
-        foreach (i, &w) in other.bitv.storage.iter().enumerate() {
+        for (i, &w) in other.bitv.storage.iter().enumerate() {
             let old = self.bitv.storage[i];
             let new = f(old, w);
             self.bitv.storage[i] = new;
@@ -721,7 +721,7 @@ impl BitvSet {
     }
 
     pub fn difference(&self, other: &BitvSet, f: &fn(&uint) -> bool) -> bool {
-        foreach (i, w1, w2) in self.common_iter(other) {
+        for (i, w1, w2) in self.common_iter(other) {
             if !iterate_bits(i, w1 & !w2, |b| f(&b)) {
                 return false
             }
@@ -734,7 +734,7 @@ impl BitvSet {
 
     pub fn symmetric_difference(&self, other: &BitvSet,
                             f: &fn(&uint) -> bool) -> bool {
-        foreach (i, w1, w2) in self.common_iter(other) {
+        for (i, w1, w2) in self.common_iter(other) {
             if !iterate_bits(i, w1 ^ w2, |b| f(&b)) {
                 return false
             }
@@ -747,7 +747,7 @@ impl BitvSet {
     }
 
     pub fn union(&self, other: &BitvSet, f: &fn(&uint) -> bool) -> bool {
-        foreach (i, w1, w2) in self.common_iter(other) {
+        for (i, w1, w2) in self.common_iter(other) {
             if !iterate_bits(i, w1 | w2, |b| f(&b)) {
                 return false
             }
@@ -761,12 +761,12 @@ impl cmp::Eq for BitvSet {
         if self.size != other.size {
             return false;
         }
-        foreach (_, w1, w2) in self.common_iter(other) {
+        for (_, w1, w2) in self.common_iter(other) {
             if w1 != w2 {
                 return false;
             }
         }
-        foreach (_, _, w) in self.outlier_iter(other) {
+        for (_, _, w) in self.outlier_iter(other) {
             if w != 0 {
                 return false;
             }
@@ -801,7 +801,7 @@ impl Set<uint> for BitvSet {
     }
 
     fn is_subset(&self, other: &BitvSet) -> bool {
-        foreach (_, w1, w2) in self.common_iter(other) {
+        for (_, w1, w2) in self.common_iter(other) {
             if w1 & w2 != w1 {
                 return false;
             }
@@ -809,7 +809,7 @@ impl Set<uint> for BitvSet {
         /* If anything is not ours, then everything is not ours so we're
            definitely a subset in that case. Otherwise if there's any stray
            ones that 'other' doesn't have, we're not a subset. */
-        foreach (mine, _, w) in self.outlier_iter(other) {
+        for (mine, _, w) in self.outlier_iter(other) {
             if !mine {
                 return true;
             } else if w != 0 {
@@ -1285,12 +1285,12 @@ mod tests {
     #[test]
     fn test_equal_sneaky_big() {
         let mut a = bitv::Bitv::new(100, false);
-        foreach i in range(0u, 100) {
+        for i in range(0u, 100) {
             a.set(i, true);
         }
 
         let mut b = bitv::Bitv::new(100, true);
-        foreach i in range(0u, 100) {
+        for i in range(0u, 100) {
             b.set(i, true);
         }
 
@@ -1333,7 +1333,7 @@ mod tests {
         let bools = [true, false, true, true];
         let bitv = from_bools(bools);
 
-        foreach (act, &ex) in bitv.iter().zip(bools.iter()) {
+        for (act, &ex) in bitv.iter().zip(bools.iter()) {
             assert_eq!(ex, act);
         }
     }
@@ -1639,7 +1639,7 @@ mod tests {
         let bitv = Bitv::new(uint::bits, false);
         do b.iter {
             let mut _sum = 0;
-            foreach pres in bitv.iter() {
+            for pres in bitv.iter() {
                 _sum += pres as uint;
             }
         }
@@ -1650,7 +1650,7 @@ mod tests {
         let bitv = Bitv::new(BENCH_BITS, false);
         do b.iter {
             let mut _sum = 0;
-            foreach pres in bitv.iter() {
+            for pres in bitv.iter() {
                 _sum += pres as uint;
             }
         }
@@ -1662,7 +1662,7 @@ mod tests {
                                               |idx| {idx % 3 == 0}));
         do b.iter {
             let mut _sum = 0;
-            foreach idx in bitv.iter() {
+            for idx in bitv.iter() {
                 _sum += idx;
             }
         }
diff --git a/src/libextra/container.rs b/src/libextra/container.rs
index 5b2de22ff07..623a9d5f452 100644
--- a/src/libextra/container.rs
+++ b/src/libextra/container.rs
@@ -53,7 +53,7 @@ mod bench {
         let mut rng = rand::XorShiftRng::new();
 
         map.clear();
-        foreach _ in range(0, n) {
+        for _ in range(0, n) {
             map.insert(rng.gen::<uint>() % n, 1);
         }
 
@@ -70,7 +70,7 @@ mod bench {
                                                  bh: &mut BenchHarness) {
         // setup
         map.clear();
-        foreach i in range(0u, n) {
+        for i in range(0u, n) {
             map.insert(i*2, 1);
         }
 
@@ -90,7 +90,7 @@ mod bench {
         let mut rng = rand::XorShiftRng::new();
         let mut keys = vec::from_fn(n, |_| rng.gen::<uint>() % n);
 
-        foreach k in keys.iter() {
+        for k in keys.iter() {
             map.insert(*k, 1);
         }
 
@@ -108,7 +108,7 @@ mod bench {
                                                map: &mut M,
                                                bh: &mut BenchHarness) {
         // setup
-        foreach i in range(0u, n) {
+        for i in range(0u, n) {
             map.insert(i, 1);
         }
 
diff --git a/src/libextra/crypto/digest.rs b/src/libextra/crypto/digest.rs
index 217573a4135..217f5b0a417 100644
--- a/src/libextra/crypto/digest.rs
+++ b/src/libextra/crypto/digest.rs
@@ -70,7 +70,7 @@ pub trait Digest {
 
 fn to_hex(rr: &[u8]) -> ~str {
     let mut s = ~"";
-    foreach b in rr.iter() {
+    for b in rr.iter() {
         let hex = uint::to_str_radix(*b as uint, 16u);
         if hex.len() == 1 {
             s.push_char('0');
diff --git a/src/libextra/crypto/sha1.rs b/src/libextra/crypto/sha1.rs
index 86a89d79f1a..aa52902c27d 100644
--- a/src/libextra/crypto/sha1.rs
+++ b/src/libextra/crypto/sha1.rs
@@ -250,7 +250,7 @@ mod tests {
         let mut out = [0u8, ..20];
 
         let mut sh = ~Sha1::new();
-        foreach t in tests.iter() {
+        for t in tests.iter() {
             (*sh).input_str(t.input);
             sh.result(out);
             assert!(t.output.as_slice() == out);
@@ -264,7 +264,7 @@ mod tests {
 
 
         // Test that it works when accepting the message in pieces
-        foreach t in tests.iter() {
+        for t in tests.iter() {
             let len = t.input.len();
             let mut left = len;
             while left > 0u {
diff --git a/src/libextra/crypto/sha2.rs b/src/libextra/crypto/sha2.rs
index 06e96d99bca..47535d5103a 100644
--- a/src/libextra/crypto/sha2.rs
+++ b/src/libextra/crypto/sha2.rs
@@ -736,7 +736,7 @@ mod tests {
 
     fn test_hash<D: Digest>(sh: &mut D, tests: &[Test]) {
         // Test that it works when accepting the message all at once
-        foreach t in tests.iter() {
+        for t in tests.iter() {
             sh.input_str(t.input);
 
             let out_str = sh.result_str();
@@ -746,7 +746,7 @@ mod tests {
         }
 
         // Test that it works when accepting the message in pieces
-        foreach t in tests.iter() {
+        for t in tests.iter() {
             let len = t.input.len();
             let mut left = len;
             while left > 0u {
diff --git a/src/libextra/dlist.rs b/src/libextra/dlist.rs
index 392eaf28157..4142bdadaf6 100644
--- a/src/libextra/dlist.rs
+++ b/src/libextra/dlist.rs
@@ -548,7 +548,7 @@ impl<A, T: Iterator<A>> FromIterator<A, T> for DList<A> {
 
 impl<A, T: Iterator<A>> Extendable<A, T> for DList<A> {
     fn extend(&mut self, iterator: &mut T) {
-        foreach elt in *iterator { self.push_back(elt); }
+        for elt in *iterator { self.push_back(elt); }
     }
 }
 
@@ -687,7 +687,7 @@ mod tests {
         check_links(&m);
         let sum = v + u;
         assert_eq!(sum.len(), m.len());
-        foreach elt in sum.consume_iter() {
+        for elt in sum.consume_iter() {
             assert_eq!(m.pop_front(), Some(elt))
         }
     }
@@ -711,7 +711,7 @@ mod tests {
         check_links(&m);
         let sum = u + v;
         assert_eq!(sum.len(), m.len());
-        foreach elt in sum.consume_iter() {
+        for elt in sum.consume_iter() {
             assert_eq!(m.pop_front(), Some(elt))
         }
     }
@@ -742,7 +742,7 @@ mod tests {
     #[test]
     fn test_iterator() {
         let m = generate_test();
-        foreach (i, elt) in m.iter().enumerate() {
+        for (i, elt) in m.iter().enumerate() {
             assert_eq!(i as int, *elt);
         }
         let mut n = DList::new();
@@ -790,7 +790,7 @@ mod tests {
     #[test]
     fn test_rev_iter() {
         let m = generate_test();
-        foreach (i, elt) in m.rev_iter().enumerate() {
+        for (i, elt) in m.rev_iter().enumerate() {
             assert_eq!((6 - i) as int, *elt);
         }
         let mut n = DList::new();
@@ -807,7 +807,7 @@ mod tests {
     fn test_mut_iter() {
         let mut m = generate_test();
         let mut len = m.len();
-        foreach (i, elt) in m.mut_iter().enumerate() {
+        for (i, elt) in m.mut_iter().enumerate() {
             assert_eq!(i as int, *elt);
             len -= 1;
         }
@@ -899,7 +899,7 @@ mod tests {
     #[test]
     fn test_mut_rev_iter() {
         let mut m = generate_test();
-        foreach (i, elt) in m.mut_rev_iter().enumerate() {
+        for (i, elt) in m.mut_rev_iter().enumerate() {
             assert_eq!((6-i) as int, *elt);
         }
         let mut n = DList::new();
@@ -943,7 +943,7 @@ mod tests {
     fn fuzz_test(sz: int) {
         let mut m = DList::new::<int>();
         let mut v = ~[];
-        foreach i in range(0, sz) {
+        for i in range(0, sz) {
             check_links(&m);
             let r: u8 = rand::random();
             match r % 6 {
@@ -969,7 +969,7 @@ mod tests {
         check_links(&m);
 
         let mut i = 0u;
-        foreach (a, &b) in m.consume_iter().zip(v.iter()) {
+        for (a, &b) in m.consume_iter().zip(v.iter()) {
             i += 1;
             assert_eq!(a, b);
         }
diff --git a/src/libextra/fileinput.rs b/src/libextra/fileinput.rs
index 2094259664c..a161989c375 100644
--- a/src/libextra/fileinput.rs
+++ b/src/libextra/fileinput.rs
@@ -419,7 +419,7 @@ mod test {
     fn make_file(path : &Path, contents: &[~str]) {
         let file = io::file_writer(path, [io::Create, io::Truncate]).unwrap();
 
-        foreach str in contents.iter() {
+        for str in contents.iter() {
             file.write_str(*str);
             file.write_char('\n');
         }
@@ -446,13 +446,13 @@ mod test {
             |i| fmt!("tmp/lib-fileinput-test-fileinput-read-byte-%u.tmp", i)), true);
 
         // 3 files containing 0\n, 1\n, and 2\n respectively
-        foreach (i, filename) in filenames.iter().enumerate() {
+        for (i, filename) in filenames.iter().enumerate() {
             make_file(filename.get_ref(), [fmt!("%u", i)]);
         }
 
         let fi = FileInput::from_vec(filenames.clone());
 
-        foreach (line, c) in "012".iter().enumerate() {
+        for (line, c) in "012".iter().enumerate() {
             assert_eq!(fi.read_byte(), c as int);
             assert_eq!(fi.state().line_num, line);
             assert_eq!(fi.state().line_num_file, 0);
@@ -476,7 +476,7 @@ mod test {
             |i| fmt!("tmp/lib-fileinput-test-fileinput-read-%u.tmp", i)), true);
 
         // 3 files containing 1\n, 2\n, and 3\n respectively
-        foreach (i, filename) in filenames.iter().enumerate() {
+        for (i, filename) in filenames.iter().enumerate() {
             make_file(filename.get_ref(), [fmt!("%u", i)]);
         }
 
@@ -496,7 +496,7 @@ mod test {
             3,
             |i| fmt!("tmp/lib-fileinput-test-input-vec-%u.tmp", i)), true);
 
-        foreach (i, filename) in filenames.iter().enumerate() {
+        for (i, filename) in filenames.iter().enumerate() {
             let contents =
                 vec::from_fn(3, |j| fmt!("%u %u", i, j));
             make_file(filename.get_ref(), contents);
@@ -518,7 +518,7 @@ mod test {
             3,
             |i| fmt!("tmp/lib-fileinput-test-input-vec-state-%u.tmp", i)),true);
 
-        foreach (i, filename) in filenames.iter().enumerate() {
+        for (i, filename) in filenames.iter().enumerate() {
             let contents =
                 vec::from_fn(3, |j| fmt!("%u %u", i, j + 1));
             make_file(filename.get_ref(), contents);
@@ -587,7 +587,7 @@ mod test {
             3,
             |i| fmt!("tmp/lib-fileinput-test-next-file-%u.tmp", i)),true);
 
-        foreach (i, filename) in filenames.iter().enumerate() {
+        for (i, filename) in filenames.iter().enumerate() {
             let contents =
                 vec::from_fn(3, |j| fmt!("%u %u", i, j + 1));
             make_file(filename.get_ref(), contents);
@@ -600,7 +600,7 @@ mod test {
         input.next_file(); // skip the rest of 1
 
         // read all lines from 1 (but don't read any from 2),
-        foreach i in range(1u, 4) {
+        for i in range(1u, 4) {
             assert_eq!(input.read_line(), fmt!("1 %u", i));
         }
         // 1 is finished, but 2 hasn't been started yet, so this will
diff --git a/src/libextra/flatpipes.rs b/src/libextra/flatpipes.rs
index b43962dae40..74653828121 100644
--- a/src/libextra/flatpipes.rs
+++ b/src/libextra/flatpipes.rs
@@ -29,12 +29,12 @@ This example sends boxed integers across tasks using serialization.
 let (port, chan) = serial::pipe_stream();
 
 do task::spawn || {
-    foreach i in range(0, 10) {
+    for i in range(0, 10) {
         chan.send(@i)
     }
 }
 
-foreach i in range(0, 10) {
+for i in range(0, 10) {
     assert @i == port.recv()
 }
 ~~~
@@ -664,12 +664,12 @@ mod test {
         let (port, chan) = serial::pipe_stream();
 
         do task::spawn || {
-            foreach i in range(0, 10) {
+            for i in range(0, 10) {
                 chan.send(i)
             }
         }
 
-        foreach i in range(0, 10) {
+        for i in range(0, 10) {
             assert!(i == port.recv())
         }
     }
@@ -680,12 +680,12 @@ mod test {
         let (port, chan) = serial::pipe_stream();
 
         do task::spawn || {
-            foreach i in range(0, 10) {
+            for i in range(0, 10) {
                 chan.send(@i)
             }
         }
 
-        foreach i in range(0, 10) {
+        for i in range(0, 10) {
             assert!(@i == port.recv())
         }
     }
@@ -711,12 +711,12 @@ mod test {
         let (port, chan) = pod::pipe_stream();
 
         do task::spawn || {
-            foreach i in range(0, 10) {
+            for i in range(0, 10) {
                 chan.send(i)
             }
         }
 
-        foreach i in range(0, 10) {
+        for i in range(0, 10) {
             assert!(i == port.recv())
         }
     }
@@ -828,7 +828,7 @@ mod test {
             // TcpSocketBuf is a Writer!
             let chan = writer_chan(socket_buf);
 
-            foreach i in range(0, 10) {
+            for i in range(0, 10) {
                 debug!("sending %?", i);
                 chan.send(i)
             }
@@ -851,7 +851,7 @@ mod test {
             // TcpSocketBuf is a Reader!
             let port = reader_port(socket_buf);
 
-            foreach i in range(0, 10) {
+            for i in range(0, 10) {
                 let j = port.recv();
                 debug!("received %?", j);
                 assert_eq!(i, j);
diff --git a/src/libextra/getopts.rs b/src/libextra/getopts.rs
index 31a73833e27..b9ee38317f3 100644
--- a/src/libextra/getopts.rs
+++ b/src/libextra/getopts.rs
@@ -307,7 +307,7 @@ pub fn getopts(args: &[~str], opts: &[Opt]) -> Result {
                 }
             }
             let mut name_pos = 0;
-            foreach nm in names.iter() {
+            for nm in names.iter() {
                 name_pos += 1;
                 let optid = match find_opt(opts, (*nm).clone()) {
                   Some(id) => id,
@@ -392,7 +392,7 @@ pub fn opt_count(mm: &Matches, nm: &str) -> uint {
 
 /// Returns true if any of several options were matched
 pub fn opts_present(mm: &Matches, names: &[~str]) -> bool {
-    foreach nm in names.iter() {
+    for nm in names.iter() {
         match find_opt(mm.opts, mkname(*nm)) {
             Some(id) if !mm.vals[id].is_empty() => return true,
             _ => (),
@@ -422,7 +422,7 @@ pub fn opt_str(mm: &Matches, nm: &str) -> ~str {
  * option took an argument
  */
 pub fn opts_str(mm: &Matches, names: &[~str]) -> ~str {
-    foreach nm in names.iter() {
+    for nm in names.iter() {
         match opt_val(mm, *nm) {
           Some(Val(ref s)) => return (*s).clone(),
           _ => ()
@@ -441,7 +441,7 @@ pub fn opts_str(mm: &Matches, names: &[~str]) -> ~str {
 pub fn opt_strs(mm: &Matches, nm: &str) -> ~[~str] {
     let mut acc: ~[~str] = ~[];
     let r = opt_vals(mm, nm);
-    foreach v in r.iter() {
+    for v in r.iter() {
         match *v { Val(ref s) => acc.push((*s).clone()), _ => () }
     }
     acc
@@ -671,7 +671,7 @@ pub mod groups {
 
             // Normalize desc to contain words separated by one space character
             let mut desc_normalized_whitespace = ~"";
-            foreach word in desc.word_iter() {
+            for word in desc.word_iter() {
                 desc_normalized_whitespace.push_str(word);
                 desc_normalized_whitespace.push_char(' ');
             }
diff --git a/src/libextra/iter.rs b/src/libextra/iter.rs
index 720a525164a..7fd47fdbd39 100644
--- a/src/libextra/iter.rs
+++ b/src/libextra/iter.rs
@@ -27,7 +27,7 @@ internal iterator by calling the `advance` method. For example:
 let xs = [0u, 1, 2, 3, 4, 5];
 let ys = [30, 40, 50, 60];
 let mut it = xs.iter().chain(ys.iter());
-foreach &x: &uint in it {
+for &x: &uint in it {
     println(x.to_str());
 }
 ~~~
diff --git a/src/libextra/json.rs b/src/libextra/json.rs
index a9f4276e79e..cd35cbdf309 100644
--- a/src/libextra/json.rs
+++ b/src/libextra/json.rs
@@ -57,7 +57,7 @@ pub struct Error {
 
 fn escape_str(s: &str) -> ~str {
     let mut escaped = ~"\"";
-    foreach c in s.iter() {
+    for c in s.iter() {
         match c {
           '"' => escaped.push_str("\\\""),
           '\\' => escaped.push_str("\\\\"),
@@ -923,7 +923,7 @@ impl serialize::Decoder for Decoder {
     fn read_char(&mut self) -> char {
         let mut v = ~[];
         let s = self.read_str();
-        foreach c in s.iter() { v.push(c) }
+        for c in s.iter() { v.push(c) }
         if v.len() != 1 { fail!("string must have one character") }
         v[0]
     }
@@ -949,7 +949,7 @@ impl serialize::Decoder for Decoder {
         let name = match self.stack.pop() {
             String(s) => s,
             List(list) => {
-                foreach v in list.consume_rev_iter() {
+                for v in list.consume_rev_iter() {
                     self.stack.push(v);
                 }
                 match self.stack.pop() {
@@ -1067,7 +1067,7 @@ impl serialize::Decoder for Decoder {
         let len = match self.stack.pop() {
             List(list) => {
                 let len = list.len();
-                foreach v in list.consume_rev_iter() {
+                for v in list.consume_rev_iter() {
                     self.stack.push(v);
                 }
                 len
@@ -1087,7 +1087,7 @@ impl serialize::Decoder for Decoder {
         let len = match self.stack.pop() {
             Object(obj) => {
                 let len = obj.len();
-                foreach (key, value) in obj.consume_iter() {
+                for (key, value) in obj.consume_iter() {
                     self.stack.push(value);
                     self.stack.push(String(key));
                 }
@@ -1157,12 +1157,12 @@ impl Ord for Json {
                         let mut d1_flat = ~[];
 
                         // FIXME #4430: this is horribly inefficient...
-                        foreach (k, v) in d0.iter() {
+                        for (k, v) in d0.iter() {
                              d0_flat.push((@(*k).clone(), @(*v).clone()));
                         }
                         d0_flat.qsort();
 
-                        foreach (k, v) in d1.iter() {
+                        for (k, v) in d1.iter() {
                             d1_flat.push((@(*k).clone(), @(*v).clone()));
                         }
                         d1_flat.qsort();
@@ -1297,7 +1297,7 @@ impl<A:ToJson> ToJson for ~[A] {
 impl<A:ToJson> ToJson for TreeMap<~str, A> {
     fn to_json(&self) -> Json {
         let mut d = TreeMap::new();
-        foreach (key, value) in self.iter() {
+        for (key, value) in self.iter() {
             d.insert((*key).clone(), value.to_json());
         }
         Object(~d)
@@ -1307,7 +1307,7 @@ impl<A:ToJson> ToJson for TreeMap<~str, A> {
 impl<A:ToJson> ToJson for HashMap<~str, A> {
     fn to_json(&self) -> Json {
         let mut d = TreeMap::new();
-        foreach (key, value) in self.iter() {
+        for (key, value) in self.iter() {
             d.insert((*key).clone(), value.to_json());
         }
         Object(~d)
@@ -1364,7 +1364,7 @@ mod tests {
     fn mk_object(items: &[(~str, Json)]) -> Json {
         let mut d = ~TreeMap::new();
 
-        foreach item in items.iter() {
+        for item in items.iter() {
             match *item {
                 (ref key, ref value) => { d.insert((*key).clone(), (*value).clone()); },
             }
diff --git a/src/libextra/num/bigint.rs b/src/libextra/num/bigint.rs
index 6f575926cc6..ab843fe6546 100644
--- a/src/libextra/num/bigint.rs
+++ b/src/libextra/num/bigint.rs
@@ -131,7 +131,7 @@ impl TotalOrd for BigUint {
         if s_len < o_len { return Less; }
         if s_len > o_len { return Greater;  }
 
-        foreach (&self_i, &other_i) in self.data.rev_iter().zip(other.data.rev_iter()) {
+        for (&self_i, &other_i) in self.data.rev_iter().zip(other.data.rev_iter()) {
             cond!((self_i < other_i) { return Less; }
                   (self_i > other_i) { return Greater; })
         }
@@ -420,7 +420,7 @@ impl Integer for BigUint {
             let bn = *b.data.last();
             let mut d = ~[];
             let mut carry = 0;
-            foreach elt in an.rev_iter() {
+            for elt in an.rev_iter() {
                 let ai = BigDigit::to_uint(carry, *elt);
                 let di = ai / (bn as uint);
                 assert!(di < BigDigit::base);
@@ -524,7 +524,7 @@ impl ToStrRadix for BigUint {
         fn fill_concat(v: &[BigDigit], radix: uint, l: uint) -> ~str {
             if v.is_empty() { return ~"0" }
             let mut s = str::with_capacity(v.len() * l);
-            foreach n in v.rev_iter() {
+            for n in v.rev_iter() {
                 let ss = uint::to_str_radix(*n as uint, radix);
                 s.push_str("0".repeat(l - ss.len()));
                 s.push_str(ss);
@@ -651,7 +651,7 @@ impl BigUint {
 
         let mut borrow = 0;
         let mut shifted = ~[];
-        foreach elem in self.data.rev_iter() {
+        for elem in self.data.rev_iter() {
             shifted = ~[(*elem >> n_bits) | borrow] + shifted;
             borrow = *elem << (BigDigit::bits - n_bits);
         }
@@ -1186,8 +1186,8 @@ mod biguint_tests {
     fn test_cmp() {
         let data: ~[BigUint] = [ &[], &[1], &[2], &[-1], &[0, 1], &[2, 1], &[1, 1, 1]  ]
             .map(|v| BigUint::from_slice(*v));
-        foreach (i, ni) in data.iter().enumerate() {
-            foreach (j0, nj) in data.slice(i, data.len()).iter().enumerate() {
+        for (i, ni) in data.iter().enumerate() {
+            for (j0, nj) in data.slice(i, data.len()).iter().enumerate() {
                 let j = j0 + i;
                 if i == j {
                     assert_eq!(ni.cmp(nj), Equal);
@@ -1360,7 +1360,7 @@ mod biguint_tests {
 
     #[test]
     fn test_add() {
-        foreach elm in sum_triples.iter() {
+        for elm in sum_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigUint::from_slice(aVec);
             let b = BigUint::from_slice(bVec);
@@ -1373,7 +1373,7 @@ mod biguint_tests {
 
     #[test]
     fn test_sub() {
-        foreach elm in sum_triples.iter() {
+        for elm in sum_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigUint::from_slice(aVec);
             let b = BigUint::from_slice(bVec);
@@ -1424,7 +1424,7 @@ mod biguint_tests {
 
     #[test]
     fn test_mul() {
-        foreach elm in mul_triples.iter() {
+        for elm in mul_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigUint::from_slice(aVec);
             let b = BigUint::from_slice(bVec);
@@ -1434,7 +1434,7 @@ mod biguint_tests {
             assert!(b * a == c);
         }
 
-        foreach elm in div_rem_quadruples.iter() {
+        for elm in div_rem_quadruples.iter() {
             let (aVec, bVec, cVec, dVec) = *elm;
             let a = BigUint::from_slice(aVec);
             let b = BigUint::from_slice(bVec);
@@ -1448,7 +1448,7 @@ mod biguint_tests {
 
     #[test]
     fn test_div_rem() {
-        foreach elm in mul_triples.iter() {
+        for elm in mul_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigUint::from_slice(aVec);
             let b = BigUint::from_slice(bVec);
@@ -1462,7 +1462,7 @@ mod biguint_tests {
             }
         }
 
-        foreach elm in div_rem_quadruples.iter() {
+        for elm in div_rem_quadruples.iter() {
             let (aVec, bVec, cVec, dVec) = *elm;
             let a = BigUint::from_slice(aVec);
             let b = BigUint::from_slice(bVec);
@@ -1579,9 +1579,9 @@ mod biguint_tests {
     #[test]
     fn test_to_str_radix() {
         let r = to_str_pairs();
-        foreach num_pair in r.iter() {
+        for num_pair in r.iter() {
             let &(ref n, ref rs) = num_pair;
-            foreach str_pair in rs.iter() {
+            for str_pair in rs.iter() {
                 let &(ref radix, ref str) = str_pair;
                 assert_eq!(&n.to_str_radix(*radix), str);
             }
@@ -1591,9 +1591,9 @@ mod biguint_tests {
     #[test]
     fn test_from_str_radix() {
         let r = to_str_pairs();
-        foreach num_pair in r.iter() {
+        for num_pair in r.iter() {
             let &(ref n, ref rs) = num_pair;
-            foreach str_pair in rs.iter() {
+            for str_pair in rs.iter() {
                 let &(ref radix, ref str) = str_pair;
                 assert_eq!(n, &FromStrRadix::from_str_radix(*str, *radix).get());
             }
@@ -1608,7 +1608,7 @@ mod biguint_tests {
     fn test_factor() {
         fn factor(n: uint) -> BigUint {
             let mut f= One::one::<BigUint>();
-            foreach i in range(2, n + 1) {
+            for i in range(2, n + 1) {
                 // FIXME(#6102): Assignment operator for BigInt causes ICE
                 // f *= BigUint::from_uint(i);
                 f = f * BigUint::from_uint(i);
@@ -1658,14 +1658,14 @@ mod bigint_tests {
     fn test_cmp() {
         let vs = [ &[2 as BigDigit], &[1, 1], &[2, 1], &[1, 1, 1] ];
         let mut nums = ~[];
-        foreach s in vs.rev_iter() {
+        for s in vs.rev_iter() {
             nums.push(BigInt::from_slice(Minus, *s));
         }
         nums.push(Zero::zero());
         nums.push_all_move(vs.map(|s| BigInt::from_slice(Plus, *s)));
 
-        foreach (i, ni) in nums.iter().enumerate() {
-            foreach (j0, nj) in nums.slice(i, nums.len()).iter().enumerate() {
+        for (i, ni) in nums.iter().enumerate() {
+            for (j0, nj) in nums.slice(i, nums.len()).iter().enumerate() {
                 let j = i + j0;
                 if i == j {
                     assert_eq!(ni.cmp(nj), Equal);
@@ -1769,7 +1769,7 @@ mod bigint_tests {
 
     #[test]
     fn test_add() {
-        foreach elm in sum_triples.iter() {
+        for elm in sum_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigInt::from_slice(Plus, aVec);
             let b = BigInt::from_slice(Plus, bVec);
@@ -1788,7 +1788,7 @@ mod bigint_tests {
 
     #[test]
     fn test_sub() {
-        foreach elm in sum_triples.iter() {
+        for elm in sum_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigInt::from_slice(Plus, aVec);
             let b = BigInt::from_slice(Plus, bVec);
@@ -1845,7 +1845,7 @@ mod bigint_tests {
 
     #[test]
     fn test_mul() {
-        foreach elm in mul_triples.iter() {
+        for elm in mul_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigInt::from_slice(Plus, aVec);
             let b = BigInt::from_slice(Plus, bVec);
@@ -1858,7 +1858,7 @@ mod bigint_tests {
             assert!((-b) * a == -c);
         }
 
-        foreach elm in div_rem_quadruples.iter() {
+        for elm in div_rem_quadruples.iter() {
             let (aVec, bVec, cVec, dVec) = *elm;
             let a = BigInt::from_slice(Plus, aVec);
             let b = BigInt::from_slice(Plus, bVec);
@@ -1897,7 +1897,7 @@ mod bigint_tests {
             }
         }
 
-        foreach elm in mul_triples.iter() {
+        for elm in mul_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigInt::from_slice(Plus, aVec);
             let b = BigInt::from_slice(Plus, bVec);
@@ -1907,7 +1907,7 @@ mod bigint_tests {
             if !b.is_zero() { check(&c, &b, &a, &Zero::zero()); }
         }
 
-        foreach elm in div_rem_quadruples.iter() {
+        for elm in div_rem_quadruples.iter() {
             let (aVec, bVec, cVec, dVec) = *elm;
             let a = BigInt::from_slice(Plus, aVec);
             let b = BigInt::from_slice(Plus, bVec);
@@ -1940,7 +1940,7 @@ mod bigint_tests {
             check_sub(&a.neg(), b, &q.neg(), &r.neg());
             check_sub(&a.neg(), &b.neg(), q, &r.neg());
         }
-        foreach elm in mul_triples.iter() {
+        for elm in mul_triples.iter() {
             let (aVec, bVec, cVec) = *elm;
             let a = BigInt::from_slice(Plus, aVec);
             let b = BigInt::from_slice(Plus, bVec);
@@ -1950,7 +1950,7 @@ mod bigint_tests {
             if !b.is_zero() { check(&c, &b, &a, &Zero::zero()); }
         }
 
-        foreach elm in div_rem_quadruples.iter() {
+        for elm in div_rem_quadruples.iter() {
             let (aVec, bVec, cVec, dVec) = *elm;
             let a = BigInt::from_slice(Plus, aVec);
             let b = BigInt::from_slice(Plus, bVec);
diff --git a/src/libextra/num/complex.rs b/src/libextra/num/complex.rs
index 82b0808b788..669dc1c1b45 100644
--- a/src/libextra/num/complex.rs
+++ b/src/libextra/num/complex.rs
@@ -239,14 +239,14 @@ mod test {
     fn test_scale_unscale() {
         assert_eq!(_05_05i.scale(2f), _1_1i);
         assert_eq!(_1_1i.unscale(2f), _05_05i);
-        foreach &c in all_consts.iter() {
+        for &c in all_consts.iter() {
             assert_eq!(c.scale(2f).unscale(2f), c);
         }
     }
 
     #[test]
     fn test_conj() {
-        foreach &c in all_consts.iter() {
+        for &c in all_consts.iter() {
             assert_eq!(c.conj(), Cmplx::new(c.re, -c.im));
             assert_eq!(c.conj().conj(), c);
         }
@@ -283,7 +283,7 @@ mod test {
             let (r, theta) = c.to_polar();
             assert!((c - Cmplx::from_polar(&r, &theta)).norm() < 1e-6);
         }
-        foreach &c in all_consts.iter() { test(c); }
+        for &c in all_consts.iter() { test(c); }
     }
 
     mod arith {
@@ -296,7 +296,7 @@ mod test {
             assert_eq!(_0_1i + _1_0i, _1_1i);
             assert_eq!(_1_0i + _neg1_1i, _0_1i);
 
-            foreach &c in all_consts.iter() {
+            for &c in all_consts.iter() {
                 assert_eq!(_0_0i + c, c);
                 assert_eq!(c + _0_0i, c);
             }
@@ -308,7 +308,7 @@ mod test {
             assert_eq!(_0_1i - _1_0i, _neg1_1i);
             assert_eq!(_0_1i - _neg1_1i, _1_0i);
 
-            foreach &c in all_consts.iter() {
+            for &c in all_consts.iter() {
                 assert_eq!(c - _0_0i, c);
                 assert_eq!(c - c, _0_0i);
             }
@@ -323,7 +323,7 @@ mod test {
             assert_eq!(_0_1i * _0_1i, -_1_0i);
             assert_eq!(_0_1i * _0_1i * _0_1i * _0_1i, _1_0i);
 
-            foreach &c in all_consts.iter() {
+            for &c in all_consts.iter() {
                 assert_eq!(c * _1_0i, c);
                 assert_eq!(_1_0i * c, c);
             }
@@ -331,7 +331,7 @@ mod test {
         #[test]
         fn test_div() {
             assert_eq!(_neg1_1i / _0_1i, _1_1i);
-            foreach &c in all_consts.iter() {
+            for &c in all_consts.iter() {
                 if c != Zero::zero() {
                     assert_eq!(c / c, _1_0i);
                 }
@@ -341,7 +341,7 @@ mod test {
         fn test_neg() {
             assert_eq!(-_1_0i + _0_1i, _neg1_1i);
             assert_eq!((-_0_1i) * _0_1i, _1_0i);
-            foreach &c in all_consts.iter() {
+            for &c in all_consts.iter() {
                 assert_eq!(-(-c), c);
             }
         }
diff --git a/src/libextra/num/rational.rs b/src/libextra/num/rational.rs
index af09ba42b80..60dd36a3b88 100644
--- a/src/libextra/num/rational.rs
+++ b/src/libextra/num/rational.rs
@@ -500,7 +500,7 @@ mod test {
         }
 
         let xs = ["0 /1", "abc", "", "1/", "--1/2","3/2/1"];
-        foreach &s in xs.iter() {
+        for &s in xs.iter() {
             test(s);
         }
     }
@@ -540,7 +540,7 @@ mod test {
         }
 
         let xs = ["0 /1", "abc", "", "1/", "--1/2","3/2/1", "3/2"];
-        foreach &s in xs.iter() {
+        for &s in xs.iter() {
             test(s);
         }
     }
diff --git a/src/libextra/priority_queue.rs b/src/libextra/priority_queue.rs
index 9873ab3d858..696ecc881b7 100644
--- a/src/libextra/priority_queue.rs
+++ b/src/libextra/priority_queue.rs
@@ -206,7 +206,7 @@ impl<T: Ord, Iter: Iterator<T>> Extendable<T, Iter> for PriorityQueue<T> {
         let len = self.capacity();
         self.reserve_at_least(len + lower);
 
-        foreach elem in *iter {
+        for elem in *iter {
             self.push(elem);
         }
     }
@@ -223,7 +223,7 @@ mod tests {
         let iterout = ~[9, 5, 3];
         let pq = PriorityQueue::from_vec(data);
         let mut i = 0;
-        foreach el in pq.iter() {
+        for el in pq.iter() {
             assert_eq!(*el, iterout[i]);
             i += 1;
         }
@@ -369,7 +369,7 @@ mod tests {
 
         let mut q: PriorityQueue<uint> = xs.rev_iter().transform(|&x| x).collect();
 
-        foreach &x in xs.iter() {
+        for &x in xs.iter() {
             assert_eq!(q.pop(), x);
         }
     }
diff --git a/src/libextra/ringbuf.rs b/src/libextra/ringbuf.rs
index f3f34a3becc..89d23191a76 100644
--- a/src/libextra/ringbuf.rs
+++ b/src/libextra/ringbuf.rs
@@ -38,7 +38,7 @@ impl<T> Container for RingBuf<T> {
 impl<T> Mutable for RingBuf<T> {
     /// Clear the RingBuf, removing all values.
     fn clear(&mut self) {
-        foreach x in self.elts.mut_iter() { *x = None }
+        for x in self.elts.mut_iter() { *x = None }
         self.nelts = 0;
         self.lo = 0;
     }
@@ -277,7 +277,7 @@ fn grow<T>(nelts: uint, loptr: &mut uint, elts: &mut ~[Option<T>]) {
     elts.reserve(newlen);
 
     /* fill with None */
-    foreach _ in range(elts.len(), elts.capacity()) {
+    for _ in range(elts.len(), elts.capacity()) {
         elts.push(None);
     }
 
@@ -292,11 +292,11 @@ fn grow<T>(nelts: uint, loptr: &mut uint, elts: &mut ~[Option<T>]) {
 
     assert!(newlen - nelts/2 >= nelts);
     if lo <= (nelts - lo) { // A
-        foreach i in range(0u, lo) {
+        for i in range(0u, lo) {
             elts.swap(i, nelts + i);
         }
     } else {                // B
-        foreach i in range(lo, nelts) {
+        for i in range(lo, nelts) {
             elts.swap(i, newlen - nelts + i);
         }
         *loptr += newlen - nelts;
@@ -333,7 +333,7 @@ impl<A, T: Iterator<A>> FromIterator<A, T> for RingBuf<A> {
 
 impl<A, T: Iterator<A>> Extendable<A, T> for RingBuf<A> {
     fn extend(&mut self, iterator: &mut T) {
-        foreach elt in *iterator {
+        for elt in *iterator {
             self.push_back(elt);
         }
     }
@@ -461,21 +461,21 @@ mod tests {
     #[test]
     fn test_push_front_grow() {
         let mut deq = RingBuf::new();
-        foreach i in range(0u, 66) {
+        for i in range(0u, 66) {
             deq.push_front(i);
         }
         assert_eq!(deq.len(), 66);
 
-        foreach i in range(0u, 66) {
+        for i in range(0u, 66) {
             assert_eq!(*deq.get(i), 65 - i);
         }
 
         let mut deq = RingBuf::new();
-        foreach i in range(0u, 66) {
+        for i in range(0u, 66) {
             deq.push_back(i);
         }
 
-        foreach i in range(0u, 66) {
+        for i in range(0u, 66) {
             assert_eq!(*deq.get(i), i);
         }
     }
@@ -606,12 +606,12 @@ mod tests {
         assert_eq!(d.iter().next(), None);
         assert_eq!(d.iter().size_hint(), (0, Some(0)));
 
-        foreach i in range(0, 5) {
+        for i in range(0, 5) {
             d.push_back(i);
         }
         assert_eq!(d.iter().collect::<~[&int]>(), ~[&0,&1,&2,&3,&4]);
 
-        foreach i in range(6, 9) {
+        for i in range(6, 9) {
             d.push_front(i);
         }
         assert_eq!(d.iter().collect::<~[&int]>(), ~[&8,&7,&6,&0,&1,&2,&3,&4]);
@@ -631,12 +631,12 @@ mod tests {
         let mut d = RingBuf::new();
         assert_eq!(d.rev_iter().next(), None);
 
-        foreach i in range(0, 5) {
+        for i in range(0, 5) {
             d.push_back(i);
         }
         assert_eq!(d.rev_iter().collect::<~[&int]>(), ~[&4,&3,&2,&1,&0]);
 
-        foreach i in range(6, 9) {
+        for i in range(6, 9) {
             d.push_front(i);
         }
         assert_eq!(d.rev_iter().collect::<~[&int]>(), ~[&4,&3,&2,&1,&0,&6,&7,&8]);
@@ -647,11 +647,11 @@ mod tests {
         let mut d = RingBuf::new();
         assert!(d.mut_iter().next().is_none());
 
-        foreach i in range(0u, 3) {
+        for i in range(0u, 3) {
             d.push_front(i);
         }
 
-        foreach (i, elt) in d.mut_iter().enumerate() {
+        for (i, elt) in d.mut_iter().enumerate() {
             assert_eq!(*elt, 2 - i);
             *elt = i;
         }
@@ -670,11 +670,11 @@ mod tests {
         let mut d = RingBuf::new();
         assert!(d.mut_rev_iter().next().is_none());
 
-        foreach i in range(0u, 3) {
+        for i in range(0u, 3) {
             d.push_front(i);
         }
 
-        foreach (i, elt) in d.mut_rev_iter().enumerate() {
+        for (i, elt) in d.mut_rev_iter().enumerate() {
             assert_eq!(*elt, i);
             *elt = i;
         }
@@ -698,7 +698,7 @@ mod tests {
 
         let mut seq = iterator::Counter::new(0u, 2).take_(256);
         let deq: RingBuf<uint> = seq.collect();
-        foreach (i, &x) in deq.iter().enumerate() {
+        for (i, &x) in deq.iter().enumerate() {
             assert_eq!(2*i, x);
         }
         assert_eq!(deq.len(), 256);
diff --git a/src/libextra/serialize.rs b/src/libextra/serialize.rs
index ad8f9297bfb..c44505694b1 100644
--- a/src/libextra/serialize.rs
+++ b/src/libextra/serialize.rs
@@ -443,7 +443,7 @@ impl<D:Decoder,T:Decodable<D> + 'static> Decodable<D> for @mut T {
 impl<'self, S:Encoder,T:Encodable<S>> Encodable<S> for &'self [T] {
     fn encode(&self, s: &mut S) {
         do s.emit_seq(self.len()) |s| {
-            foreach (i, e) in self.iter().enumerate() {
+            for (i, e) in self.iter().enumerate() {
                 s.emit_seq_elt(i, |s| e.encode(s))
             }
         }
@@ -453,7 +453,7 @@ impl<'self, S:Encoder,T:Encodable<S>> Encodable<S> for &'self [T] {
 impl<S:Encoder,T:Encodable<S>> Encodable<S> for ~[T] {
     fn encode(&self, s: &mut S) {
         do s.emit_seq(self.len()) |s| {
-            foreach (i, e) in self.iter().enumerate() {
+            for (i, e) in self.iter().enumerate() {
                 s.emit_seq_elt(i, |s| e.encode(s))
             }
         }
@@ -473,7 +473,7 @@ impl<D:Decoder,T:Decodable<D>> Decodable<D> for ~[T] {
 impl<S:Encoder,T:Encodable<S>> Encodable<S> for @[T] {
     fn encode(&self, s: &mut S) {
         do s.emit_seq(self.len()) |s| {
-            foreach (i, e) in self.iter().enumerate() {
+            for (i, e) in self.iter().enumerate() {
                 s.emit_seq_elt(i, |s| e.encode(s))
             }
         }
@@ -667,7 +667,7 @@ impl<
 > Encodable<S> for DList<T> {
     fn encode(&self, s: &mut S) {
         do s.emit_seq(self.len()) |s| {
-            foreach (i, e) in self.iter().enumerate() {
+            for (i, e) in self.iter().enumerate() {
                 s.emit_seq_elt(i, |s| e.encode(s));
             }
         }
@@ -678,7 +678,7 @@ impl<D:Decoder,T:Decodable<D>> Decodable<D> for DList<T> {
     fn decode(d: &mut D) -> DList<T> {
         let mut list = DList::new();
         do d.read_seq |d, len| {
-            foreach i in range(0u, len) {
+            for i in range(0u, len) {
                 list.push_back(d.read_seq_elt(i, |d| Decodable::decode(d)));
             }
         }
@@ -692,7 +692,7 @@ impl<
 > Encodable<S> for RingBuf<T> {
     fn encode(&self, s: &mut S) {
         do s.emit_seq(self.len()) |s| {
-            foreach (i, e) in self.iter().enumerate() {
+            for (i, e) in self.iter().enumerate() {
                 s.emit_seq_elt(i, |s| e.encode(s));
             }
         }
@@ -703,7 +703,7 @@ impl<D:Decoder,T:Decodable<D>> Decodable<D> for RingBuf<T> {
     fn decode(d: &mut D) -> RingBuf<T> {
         let mut deque = RingBuf::new();
         do d.read_seq |d, len| {
-            foreach i in range(0u, len) {
+            for i in range(0u, len) {
                 deque.push_back(d.read_seq_elt(i, |d| Decodable::decode(d)));
             }
         }
@@ -719,7 +719,7 @@ impl<
     fn encode(&self, e: &mut E) {
         do e.emit_map(self.len()) |e| {
             let mut i = 0;
-            foreach (key, val) in self.iter() {
+            for (key, val) in self.iter() {
                 e.emit_map_elt_key(i, |e| key.encode(e));
                 e.emit_map_elt_val(i, |e| val.encode(e));
                 i += 1;
@@ -736,7 +736,7 @@ impl<
     fn decode(d: &mut D) -> HashMap<K, V> {
         do d.read_map |d, len| {
             let mut map = HashMap::with_capacity(len);
-            foreach i in range(0u, len) {
+            for i in range(0u, len) {
                 let key = d.read_map_elt_key(i, |d| Decodable::decode(d));
                 let val = d.read_map_elt_val(i, |d| Decodable::decode(d));
                 map.insert(key, val);
@@ -753,7 +753,7 @@ impl<
     fn encode(&self, s: &mut S) {
         do s.emit_seq(self.len()) |s| {
             let mut i = 0;
-            foreach e in self.iter() {
+            for e in self.iter() {
                 s.emit_seq_elt(i, |s| e.encode(s));
                 i += 1;
             }
@@ -768,7 +768,7 @@ impl<
     fn decode(d: &mut D) -> HashSet<T> {
         do d.read_seq |d, len| {
             let mut set = HashSet::with_capacity(len);
-            foreach i in range(0u, len) {
+            for i in range(0u, len) {
                 set.insert(d.read_seq_elt(i, |d| Decodable::decode(d)));
             }
             set
@@ -800,7 +800,7 @@ impl<
     fn decode(d: &mut D) -> TrieMap<V> {
         do d.read_map |d, len| {
             let mut map = TrieMap::new();
-            foreach i in range(0u, len) {
+            for i in range(0u, len) {
                 let key = d.read_map_elt_key(i, |d| Decodable::decode(d));
                 let val = d.read_map_elt_val(i, |d| Decodable::decode(d));
                 map.insert(key, val);
@@ -827,7 +827,7 @@ impl<D: Decoder> Decodable<D> for TrieSet {
     fn decode(d: &mut D) -> TrieSet {
         do d.read_seq |d, len| {
             let mut set = TrieSet::new();
-            foreach i in range(0u, len) {
+            for i in range(0u, len) {
                 set.insert(d.read_seq_elt(i, |d| Decodable::decode(d)));
             }
             set
@@ -843,7 +843,7 @@ impl<
     fn encode(&self, e: &mut E) {
         do e.emit_map(self.len()) |e| {
             let mut i = 0;
-            foreach (key, val) in self.iter() {
+            for (key, val) in self.iter() {
                 e.emit_map_elt_key(i, |e| key.encode(e));
                 e.emit_map_elt_val(i, |e| val.encode(e));
                 i += 1;
@@ -860,7 +860,7 @@ impl<
     fn decode(d: &mut D) -> TreeMap<K, V> {
         do d.read_map |d, len| {
             let mut map = TreeMap::new();
-            foreach i in range(0u, len) {
+            for i in range(0u, len) {
                 let key = d.read_map_elt_key(i, |d| Decodable::decode(d));
                 let val = d.read_map_elt_val(i, |d| Decodable::decode(d));
                 map.insert(key, val);
@@ -877,7 +877,7 @@ impl<
     fn encode(&self, s: &mut S) {
         do s.emit_seq(self.len()) |s| {
             let mut i = 0;
-            foreach e in self.iter() {
+            for e in self.iter() {
                 s.emit_seq_elt(i, |s| e.encode(s));
                 i += 1;
             }
@@ -892,7 +892,7 @@ impl<
     fn decode(d: &mut D) -> TreeSet<T> {
         do d.read_seq |d, len| {
             let mut set = TreeSet::new();
-            foreach i in range(0u, len) {
+            for i in range(0u, len) {
                 set.insert(d.read_seq_elt(i, |d| Decodable::decode(d)));
             }
             set
@@ -912,7 +912,7 @@ pub trait EncoderHelpers {
 impl<S:Encoder> EncoderHelpers for S {
     fn emit_from_vec<T>(&mut self, v: &[T], f: &fn(&mut S, &T)) {
         do self.emit_seq(v.len()) |this| {
-            foreach (i, e) in v.iter().enumerate() {
+            for (i, e) in v.iter().enumerate() {
                 do this.emit_seq_elt(i) |this| {
                     f(this, e)
                 }
diff --git a/src/libextra/smallintmap.rs b/src/libextra/smallintmap.rs
index 8b8e3faaf9a..39efe4eda4b 100644
--- a/src/libextra/smallintmap.rs
+++ b/src/libextra/smallintmap.rs
@@ -30,7 +30,7 @@ impl<V> Container for SmallIntMap<V> {
     /// Return the number of elements in the map
     fn len(&self) -> uint {
         let mut sz = 0;
-        foreach i in range(0u, self.v.len()) {
+        for i in range(0u, self.v.len()) {
             match self.v[i] {
                 Some(_) => sz += 1,
                 None => {}
@@ -123,7 +123,7 @@ impl<V> SmallIntMap<V> {
 
     /// Visit all key-value pairs in order
     pub fn each<'a>(&'a self, it: &fn(&uint, &'a V) -> bool) -> bool {
-        foreach i in range(0u, self.v.len()) {
+        for i in range(0u, self.v.len()) {
             match self.v[i] {
               Some(ref elt) => if !it(&i, elt) { return false; },
               None => ()
@@ -144,7 +144,7 @@ impl<V> SmallIntMap<V> {
 
     /// Iterate over the map and mutate the contained values
     pub fn mutate_values(&mut self, it: &fn(&uint, &mut V) -> bool) -> bool {
-        foreach i in range(0, self.v.len()) {
+        for i in range(0, self.v.len()) {
             match self.v[i] {
               Some(ref mut elt) => if !it(&i, elt) { return false; },
               None => ()
@@ -446,7 +446,7 @@ mod test_map {
         assert!(m.insert(6, 10));
         assert!(m.insert(10, 11));
 
-        foreach (k, v) in m.mut_iter() {
+        for (k, v) in m.mut_iter() {
             *v += k as int;
         }
 
@@ -488,7 +488,7 @@ mod test_map {
         assert!(m.insert(6, 10));
         assert!(m.insert(10, 11));
 
-        foreach (k, v) in m.mut_rev_iter() {
+        for (k, v) in m.mut_rev_iter() {
             *v += k as int;
         }
 
@@ -506,7 +506,7 @@ mod test_map {
         let mut m = SmallIntMap::new();
         m.insert(1, ~2);
         let mut called = false;
-        foreach (k, v) in m.consume() {
+        for (k, v) in m.consume() {
             assert!(!called);
             called = true;
             assert_eq!(k, 1);
diff --git a/src/libextra/sort.rs b/src/libextra/sort.rs
index ffcfc500b5e..8090dd26ef2 100644
--- a/src/libextra/sort.rs
+++ b/src/libextra/sort.rs
@@ -470,7 +470,7 @@ impl<T:Clone + Ord> MergeState<T> {
         assert!(len1 != 0 && len2 != 0 && base1+len1 == base2);
 
         let mut tmp = ~[];
-        foreach i in range(base1, base1+len1) {
+        for i in range(base1, base1+len1) {
             tmp.push(array[i].clone());
         }
 
@@ -580,7 +580,7 @@ impl<T:Clone + Ord> MergeState<T> {
         assert!(len1 != 1 && len2 != 0 && base1 + len1 == base2);
 
         let mut tmp = ~[];
-        foreach i in range(base2, base2+len2) {
+        for i in range(base2, base2+len2) {
             tmp.push(array[i].clone());
         }
 
@@ -732,7 +732,7 @@ fn copy_vec<T:Clone>(dest: &mut [T],
                     from: &[T]) {
     assert!(s1+from.len() <= dest.len());
 
-    foreach (i, v) in from.iter().enumerate() {
+    for (i, v) in from.iter().enumerate() {
         dest[s1+i] = (*v).clone();
     }
 }
@@ -842,7 +842,7 @@ mod test_qsort {
         let immut_names = names;
 
         let pairs = vec::zip_slice(expected, immut_names);
-        foreach p in pairs.iter() {
+        for p in pairs.iter() {
             let (a, b) = *p;
             debug!("%d %d", a, b);
             assert_eq!(a, b);
@@ -1054,7 +1054,7 @@ mod big_tests {
 
     fn tabulate_unique(lo: uint, hi: uint) {
         fn isSorted<T:Ord>(arr: &[T]) {
-            foreach i in range(0u, arr.len() - 1) {
+            for i in range(0u, arr.len() - 1) {
                 if arr[i] > arr[i+1] {
                     fail!("Array not sorted");
                 }
@@ -1063,7 +1063,7 @@ mod big_tests {
 
         let mut rng = rand::rng();
 
-        foreach i in range(lo, hi) {
+        for i in range(lo, hi) {
             let n = 1 << i;
             let mut arr: ~[float] = do vec::from_fn(n) |_i| {
                 rng.gen()
@@ -1125,7 +1125,7 @@ mod big_tests {
 
     fn tabulate_managed(lo: uint, hi: uint) {
         fn isSorted<T:Ord>(arr: &[@T]) {
-            foreach i in range(0u, arr.len() - 1) {
+            for i in range(0u, arr.len() - 1) {
                 if arr[i] > arr[i+1] {
                     fail!("Array not sorted");
                 }
@@ -1134,7 +1134,7 @@ mod big_tests {
 
         let mut rng = rand::rng();
 
-        foreach i in range(lo, hi) {
+        for i in range(lo, hi) {
             let n = 1 << i;
             let arr: ~[@float] = do vec::from_fn(n) |_i| {
                 @rng.gen()
diff --git a/src/libextra/stats.rs b/src/libextra/stats.rs
index 69d0a343424..68d5af43688 100644
--- a/src/libextra/stats.rs
+++ b/src/libextra/stats.rs
@@ -167,7 +167,7 @@ impl<'self> Stats for &'self [f64] {
         } else {
             let mean = self.mean();
             let mut v = 0.0;
-            foreach s in self.iter() {
+            for s in self.iter() {
                 let x = *s - mean;
                 v += x*x;
             }
@@ -254,7 +254,7 @@ pub fn winsorize(samples: &mut [f64], pct: f64) {
     sort::tim_sort(tmp);
     let lo = percentile_of_sorted(tmp, pct);
     let hi = percentile_of_sorted(tmp, 100.0-pct);
-    foreach samp in samples.mut_iter() {
+    for samp in samples.mut_iter() {
         if *samp > hi {
             *samp = hi
         } else if *samp < lo {
diff --git a/src/libextra/sync.rs b/src/libextra/sync.rs
index 276f9cad7c6..63e371899a9 100644
--- a/src/libextra/sync.rs
+++ b/src/libextra/sync.rs
@@ -893,13 +893,13 @@ mod tests {
         }
 
         // wait until all children get in the mutex
-        foreach port in ports.iter() { let _ = port.recv(); }
+        for port in ports.iter() { let _ = port.recv(); }
         do m.lock_cond |cond| {
             let num_woken = cond.broadcast();
             assert_eq!(num_woken, num_waiters);
         }
         // wait until all children wake up
-        foreach port in ports.iter() { let _ = port.recv(); }
+        for port in ports.iter() { let _ = port.recv(); }
     }
     #[test]
     fn test_mutex_cond_broadcast() {
@@ -991,7 +991,7 @@ mod tests {
                     }
                 }
             }
-            foreach p in sibling_convos.iter() {
+            for p in sibling_convos.iter() {
                 let _ = p.recv(); // wait for sibling to get in the mutex
             }
             do m2.lock { }
@@ -1001,7 +1001,7 @@ mod tests {
         assert!(result.is_err());
         // child task must have finished by the time try returns
         let r = p.recv();
-        foreach p in r.iter() { p.recv(); } // wait on all its siblings
+        for p in r.iter() { p.recv(); } // wait on all its siblings
         do m.lock_cond |cond| {
             let woken = cond.broadcast();
             assert_eq!(woken, 0);
@@ -1253,13 +1253,13 @@ mod tests {
         }
 
         // wait until all children get in the mutex
-        foreach port in ports.iter() { let _ = port.recv(); }
+        for port in ports.iter() { let _ = port.recv(); }
         do lock_cond(x, dg2) |cond| {
             let num_woken = cond.broadcast();
             assert_eq!(num_woken, num_waiters);
         }
         // wait until all children wake up
-        foreach port in ports.iter() { let _ = port.recv(); }
+        for port in ports.iter() { let _ = port.recv(); }
     }
     #[test]
     fn test_rwlock_cond_broadcast() {
diff --git a/src/libextra/task_pool.rs b/src/libextra/task_pool.rs
index ddb3c31ec05..17588b93ec4 100644
--- a/src/libextra/task_pool.rs
+++ b/src/libextra/task_pool.rs
@@ -35,7 +35,7 @@ pub struct TaskPool<T> {
 #[unsafe_destructor]
 impl<T> Drop for TaskPool<T> {
     fn drop(&self) {
-        foreach channel in self.channels.iter() {
+        for channel in self.channels.iter() {
             channel.send(Quit);
         }
     }
diff --git a/src/libextra/tempfile.rs b/src/libextra/tempfile.rs
index 79b26003696..cb1bde14056 100644
--- a/src/libextra/tempfile.rs
+++ b/src/libextra/tempfile.rs
@@ -19,7 +19,7 @@ use std::rand;
 /// have the suffix `suffix`. If no directory can be created, None is returned.
 pub fn mkdtemp(tmpdir: &Path, suffix: &str) -> Option<Path> {
     let mut r = rand::rng();
-    foreach _ in range(0u, 1000) {
+    for _ in range(0u, 1000) {
         let p = tmpdir.push(r.gen_str(16) + suffix);
         if os::make_dir(&p, 0x1c0) { // 700
             return Some(p);
diff --git a/src/libextra/terminfo/parm.rs b/src/libextra/terminfo/parm.rs
index 3669c1ea0a3..b619e0f33b6 100644
--- a/src/libextra/terminfo/parm.rs
+++ b/src/libextra/terminfo/parm.rs
@@ -102,11 +102,11 @@ pub fn expand(cap: &[u8], params: &[Param], vars: &mut Variables)
         Number(0), Number(0), Number(0), Number(0), Number(0),
         Number(0), Number(0), Number(0), Number(0),
     ];
-    foreach (dst, src) in mparams.mut_iter().zip(params.iter()) {
+    for (dst, src) in mparams.mut_iter().zip(params.iter()) {
         *dst = (*src).clone();
     }
 
-    foreach c in cap.iter().transform(|&x| x) {
+    for c in cap.iter().transform(|&x| x) {
         let cur = c as char;
         let mut old_state = state;
         match state {
@@ -605,7 +605,7 @@ mod test {
         let mut varstruct = Variables::new();
         let vars = &mut varstruct;
         let caps = ["%d", "%c", "%s", "%Pa", "%l", "%!", "%~"];
-        foreach cap in caps.iter() {
+        for cap in caps.iter() {
             let res = expand(cap.as_bytes(), [], vars);
             assert!(res.is_err(),
                     "Op %s succeeded incorrectly with 0 stack entries", *cap);
@@ -615,7 +615,7 @@ mod test {
                     "Op %s failed with 1 stack entry: %s", *cap, res.unwrap_err());
         }
         let caps = ["%+", "%-", "%*", "%/", "%m", "%&", "%|", "%A", "%O"];
-        foreach cap in caps.iter() {
+        for cap in caps.iter() {
             let res = expand(cap.as_bytes(), [], vars);
             assert!(res.is_err(),
                     "Binop %s succeeded incorrectly with 0 stack entries", *cap);
@@ -636,7 +636,7 @@ mod test {
     #[test]
     fn test_comparison_ops() {
         let v = [('<', [1u8, 0u8, 0u8]), ('=', [0u8, 1u8, 0u8]), ('>', [0u8, 0u8, 1u8])];
-        foreach &(op, bs) in v.iter() {
+        for &(op, bs) in v.iter() {
             let s = fmt!("%%{1}%%{2}%%%c%%d", op);
             let res = expand(s.as_bytes(), [], &mut Variables::new());
             assert!(res.is_ok(), res.unwrap_err());
diff --git a/src/libextra/terminfo/parser/compiled.rs b/src/libextra/terminfo/parser/compiled.rs
index 869f7d9df2b..426cacb62fa 100644
--- a/src/libextra/terminfo/parser/compiled.rs
+++ b/src/libextra/terminfo/parser/compiled.rs
@@ -222,7 +222,7 @@ pub fn parse(file: @Reader, longnames: bool) -> Result<~TermInfo, ~str> {
 
     let mut bools_map = HashMap::new();
     if bools_bytes != 0 {
-        foreach i in range(0, bools_bytes) {
+        for i in range(0, bools_bytes) {
             let b = file.read_byte();
             if b < 0 {
                 error!("EOF reading bools after %? entries", i);
@@ -243,7 +243,7 @@ pub fn parse(file: @Reader, longnames: bool) -> Result<~TermInfo, ~str> {
 
     let mut numbers_map = HashMap::new();
     if numbers_count != 0 {
-        foreach i in range(0, numbers_count) {
+        for i in range(0, numbers_count) {
             let n = file.read_le_u16();
             if n != 0xFFFF {
                 debug!("%s#%?", nnames[i], n);
@@ -258,7 +258,7 @@ pub fn parse(file: @Reader, longnames: bool) -> Result<~TermInfo, ~str> {
 
     if string_offsets_count != 0 {
         let mut string_offsets = vec::with_capacity(10);
-        foreach _ in range(0, string_offsets_count) {
+        for _ in range(0, string_offsets_count) {
             string_offsets.push(file.read_le_u16());
         }
 
@@ -272,7 +272,7 @@ pub fn parse(file: @Reader, longnames: bool) -> Result<~TermInfo, ~str> {
             return Err(~"error: hit EOF before end of string table");
         }
 
-        foreach (i, v) in string_offsets.iter().enumerate() {
+        for (i, v) in string_offsets.iter().enumerate() {
             let offset = *v;
             if offset == 0xFFFF { // non-entry
                 loop;
diff --git a/src/libextra/terminfo/searcher.rs b/src/libextra/terminfo/searcher.rs
index 175cf836c47..f7999050804 100644
--- a/src/libextra/terminfo/searcher.rs
+++ b/src/libextra/terminfo/searcher.rs
@@ -35,7 +35,7 @@ pub fn get_dbpath_for_term(term: &str) -> Option<~path> {
                 dirs_to_search.push(homedir.unwrap().push(".terminfo")); // ncurses compatability
             }
             match getenv("TERMINFO_DIRS") {
-                Some(dirs) => foreach i in dirs.split_iter(':') {
+                Some(dirs) => for i in dirs.split_iter(':') {
                     if i == "" {
                         dirs_to_search.push(path("/usr/share/terminfo"));
                     } else {
@@ -54,7 +54,7 @@ pub fn get_dbpath_for_term(term: &str) -> Option<~path> {
     };
 
     // Look for the terminal in all of the search directories
-    foreach p in dirs_to_search.iter() {
+    for p in dirs_to_search.iter() {
         let newp = ~p.push_many(&[str::from_char(first_char), term.to_owned()]);
         if os::path_exists(p) && os::path_exists(newp) {
             return Some(newp);
diff --git a/src/libextra/test.rs b/src/libextra/test.rs
index fd5d3fb21b1..02481693eb9 100644
--- a/src/libextra/test.rs
+++ b/src/libextra/test.rs
@@ -429,11 +429,11 @@ impl ConsoleTestState {
     pub fn write_failures(&self) {
         self.out.write_line("\nfailures:");
         let mut failures = ~[];
-        foreach f in self.failures.iter() {
+        for f in self.failures.iter() {
             failures.push(f.name.to_str());
         }
         sort::tim_sort(failures);
-        foreach name in failures.iter() {
+        for name in failures.iter() {
             self.out.write_line(fmt!("    %s", name.to_str()));
         }
     }
@@ -445,7 +445,7 @@ impl ConsoleTestState {
         let mut added = 0;
         let mut removed = 0;
 
-        foreach (k, v) in diff.iter() {
+        for (k, v) in diff.iter() {
             match *v {
                 LikelyNoise => noise += 1,
                 MetricAdded => {
@@ -565,7 +565,7 @@ pub fn run_tests_console(opts: &TestOpts,
                     TrIgnored => st.ignored += 1,
                     TrMetrics(mm) => {
                         let tname = test.name.to_str();
-                        foreach (k,v) in mm.iter() {
+                        for (k,v) in mm.iter() {
                             st.metrics.insert_metric(tname + "." + *k,
                                                      v.value, v.noise);
                         }
@@ -699,7 +699,7 @@ fn run_tests(opts: &TestOpts,
 
     // All benchmarks run at the end, in serial.
     // (this includes metric fns)
-    foreach b in filtered_benchs_and_metrics.consume_iter() {
+    for b in filtered_benchs_and_metrics.consume_iter() {
         callback(TeWait(b.desc.clone()));
         run_test(!opts.run_benchmarks, b, ch.clone());
         let (test, result) = p.recv();
@@ -887,7 +887,7 @@ impl MetricMap {
     pub fn compare_to_old(&self, old: &MetricMap,
                           noise_pct: Option<f64>) -> MetricDiff {
         let mut diff : MetricDiff = TreeMap::new();
-        foreach (k, vold) in old.iter() {
+        for (k, vold) in old.iter() {
             let r = match self.find(k) {
                 None => MetricRemoved,
                 Some(v) => {
@@ -924,7 +924,7 @@ impl MetricMap {
             };
             diff.insert((*k).clone(), r);
         }
-        foreach (k, _) in self.iter() {
+        for (k, _) in self.iter() {
             if !diff.contains_key(k) {
                 diff.insert((*k).clone(), MetricAdded);
             }
@@ -990,7 +990,7 @@ impl BenchHarness {
     pub fn iter(&mut self, inner:&fn()) {
         self.ns_start = precise_time_ns();
         let k = self.iterations;
-        foreach _ in range(0u64, k) {
+        for _ in range(0u64, k) {
             inner();
         }
         self.ns_end = precise_time_ns();
@@ -1039,7 +1039,7 @@ impl BenchHarness {
         loop {
             let loop_start = precise_time_ns();
 
-            foreach p in samples.mut_iter() {
+            for p in samples.mut_iter() {
                 self.bench_n(n as u64, |x| f(x));
                 *p = self.ns_per_iter() as f64;
             };
@@ -1047,7 +1047,7 @@ impl BenchHarness {
             stats::winsorize(samples, 5.0);
             let summ = stats::Summary::new(samples);
 
-            foreach p in samples.mut_iter() {
+            for p in samples.mut_iter() {
                 self.bench_n(5 * n as u64, |x| f(x));
                 *p = self.ns_per_iter() as f64;
             };
@@ -1287,7 +1287,7 @@ mod tests {
         {
             fn testfn() { }
             let mut tests = ~[];
-            foreach name in names.iter() {
+            for name in names.iter() {
                 let test = TestDescAndFn {
                     desc: TestDesc {
                         name: DynTestName((*name).clone()),
@@ -1313,7 +1313,7 @@ mod tests {
 
         let pairs = vec::zip(expected, filtered);
 
-        foreach p in pairs.iter() {
+        for p in pairs.iter() {
             match *p {
                 (ref a, ref b) => {
                     assert!(*a == b.desc.name.to_str());
diff --git a/src/libextra/time.rs b/src/libextra/time.rs
index d95ac6d6c25..efc3dc87adc 100644
--- a/src/libextra/time.rs
+++ b/src/libextra/time.rs
@@ -257,7 +257,7 @@ impl Tm {
 priv fn do_strptime(s: &str, format: &str) -> Result<Tm, ~str> {
     fn match_str(s: &str, pos: uint, needle: &str) -> bool {
         let mut i = pos;
-        foreach ch in needle.byte_iter() {
+        for ch in needle.byte_iter() {
             if s[i] != ch {
                 return false;
             }
@@ -1036,7 +1036,7 @@ mod tests {
             ~"Friday",
             ~"Saturday"
         ];
-        foreach day in days.iter() {
+        for day in days.iter() {
             assert!(test(*day, "%A"));
         }
 
@@ -1049,7 +1049,7 @@ mod tests {
             ~"Fri",
             ~"Sat"
         ];
-        foreach day in days.iter() {
+        for day in days.iter() {
             assert!(test(*day, "%a"));
         }
 
@@ -1067,7 +1067,7 @@ mod tests {
             ~"November",
             ~"December"
         ];
-        foreach day in months.iter() {
+        for day in months.iter() {
             assert!(test(*day, "%B"));
         }
 
@@ -1085,7 +1085,7 @@ mod tests {
             ~"Nov",
             ~"Dec"
         ];
-        foreach day in months.iter() {
+        for day in months.iter() {
             assert!(test(*day, "%b"));
         }
 
diff --git a/src/libextra/treemap.rs b/src/libextra/treemap.rs
index 82c7bf6caf1..ed777347fba 100644
--- a/src/libextra/treemap.rs
+++ b/src/libextra/treemap.rs
@@ -47,7 +47,7 @@ impl<K: Eq + TotalOrd, V: Eq> Eq for TreeMap<K, V> {
         } else {
             let mut x = self.iter();
             let mut y = other.iter();
-            foreach _ in range(0u, self.len()) {
+            for _ in range(0u, self.len()) {
                 if x.next().unwrap() != y.next().unwrap() {
                     return false
                 }
@@ -65,7 +65,7 @@ fn lt<K: Ord + TotalOrd, V: Ord>(a: &TreeMap<K, V>,
     let mut y = b.iter();
 
     let (a_len, b_len) = (a.len(), b.len());
-    foreach _ in range(0u, num::min(a_len, b_len)) {
+    for _ in range(0u, num::min(a_len, b_len)) {
         let (key_a, value_a) = x.next().unwrap();
         let (key_b, value_b) = y.next().unwrap();
         if *key_a < *key_b { return true; }
@@ -674,7 +674,7 @@ fn remove<K: TotalOrd, V>(node: &mut Option<~TreeNode<K, V>>,
     fn heir_swap<K: TotalOrd, V>(node: &mut ~TreeNode<K, V>,
                                  child: &mut Option<~TreeNode<K, V>>) {
         // *could* be done without recursion, but it won't borrow check
-        foreach x in child.mut_iter() {
+        for x in child.mut_iter() {
             if x.right.is_some() {
                 heir_swap(node, &mut x.right);
             } else {
@@ -729,18 +729,18 @@ fn remove<K: TotalOrd, V>(node: &mut Option<~TreeNode<K, V>>,
                 save.level -= 1;
 
                 if right_level > save.level {
-                    foreach x in save.right.mut_iter() { x.level = save.level }
+                    for x in save.right.mut_iter() { x.level = save.level }
                 }
 
                 skew(save);
 
-                foreach right in save.right.mut_iter() {
+                for right in save.right.mut_iter() {
                     skew(right);
-                    foreach x in right.right.mut_iter() { skew(x) }
+                    for x in right.right.mut_iter() { skew(x) }
                 }
 
                 split(save);
-                foreach x in save.right.mut_iter() { split(x) }
+                for x in save.right.mut_iter() { split(x) }
             }
 
             return ret;
@@ -763,7 +763,7 @@ impl<K: TotalOrd, V, T: Iterator<(K, V)>> FromIterator<(K, V), T> for TreeMap<K,
 impl<K: TotalOrd, V, T: Iterator<(K, V)>> Extendable<(K, V), T> for TreeMap<K, V> {
     #[inline]
     fn extend(&mut self, iter: &mut T) {
-        foreach (k, v) in *iter {
+        for (k, v) in *iter {
             self.insert(k, v);
         }
     }
@@ -780,7 +780,7 @@ impl<T: TotalOrd, Iter: Iterator<T>> FromIterator<T, Iter> for TreeSet<T> {
 impl<T: TotalOrd, Iter: Iterator<T>> Extendable<T, Iter> for TreeSet<T> {
     #[inline]
     fn extend(&mut self, iter: &mut Iter) {
-        foreach elem in *iter {
+        for elem in *iter {
             self.insert(elem);
         }
     }
@@ -863,13 +863,13 @@ mod test_treemap {
     fn check_equal<K: Eq + TotalOrd, V: Eq>(ctrl: &[(K, V)],
                                             map: &TreeMap<K, V>) {
         assert_eq!(ctrl.is_empty(), map.is_empty());
-        foreach x in ctrl.iter() {
+        for x in ctrl.iter() {
             let &(ref k, ref v) = x;
             assert!(map.find(k).unwrap() == v)
         }
-        foreach (map_k, map_v) in map.iter() {
+        for (map_k, map_v) in map.iter() {
             let mut found = false;
-            foreach x in ctrl.iter() {
+            for x in ctrl.iter() {
                 let &(ref ctrl_k, ref ctrl_v) = x;
                 if *map_k == *ctrl_k {
                     assert!(*map_v == *ctrl_v);
@@ -983,7 +983,7 @@ mod test_treemap {
         assert!(m.insert(1, 2));
 
         let mut n = 0;
-        foreach (k, v) in m.iter() {
+        for (k, v) in m.iter() {
             assert_eq!(*k, n);
             assert_eq!(*v, n * 2);
             n += 1;
@@ -1091,7 +1091,7 @@ mod test_treemap {
                         (&x5, &y5)];
         let mut i = 0;
 
-        foreach x in b {
+        for x in b {
             assert_eq!(expected[i], x);
             i += 1;
 
@@ -1100,7 +1100,7 @@ mod test_treemap {
             }
         }
 
-        foreach x in b {
+        for x in b {
             assert_eq!(expected[i], x);
             i += 1;
         }
@@ -1112,7 +1112,7 @@ mod test_treemap {
 
         let map: TreeMap<int, int> = xs.iter().transform(|&x| x).collect();
 
-        foreach &(k, v) in xs.iter() {
+        for &(k, v) in xs.iter() {
             assert_eq!(map.find(&k), Some(&v));
         }
     }
@@ -1260,7 +1260,7 @@ mod test_set {
         assert!(m.insert(1));
 
         let mut n = 0;
-        foreach x in m.iter() {
+        for x in m.iter() {
             printfln!(x);
             assert_eq!(*x, n);
             n += 1
@@ -1290,8 +1290,8 @@ mod test_set {
         let mut set_a = TreeSet::new();
         let mut set_b = TreeSet::new();
 
-        foreach x in a.iter() { assert!(set_a.insert(*x)) }
-        foreach y in b.iter() { assert!(set_b.insert(*y)) }
+        for x in a.iter() { assert!(set_a.insert(*x)) }
+        for y in b.iter() { assert!(set_b.insert(*y)) }
 
         let mut i = 0;
         do f(&set_a, &set_b) |x| {
@@ -1413,7 +1413,7 @@ mod test_set {
 
         let set: TreeSet<int> = xs.iter().transform(|&x| x).collect();
 
-        foreach x in xs.iter() {
+        for x in xs.iter() {
             assert!(set.contains(x));
         }
     }
diff --git a/src/libextra/url.rs b/src/libextra/url.rs
index 9b4bf9d0ad4..523c3521f86 100644
--- a/src/libextra/url.rs
+++ b/src/libextra/url.rs
@@ -206,10 +206,10 @@ pub fn encode_form_urlencoded(m: &HashMap<~str, ~[~str]>) -> ~str {
     let mut out = ~"";
     let mut first = true;
 
-    foreach (key, values) in m.iter() {
+    for (key, values) in m.iter() {
         let key = encode_plus(*key);
 
-        foreach value in values.iter() {
+        for value in values.iter() {
             if first {
                 first = false;
             } else {
@@ -331,7 +331,7 @@ fn userinfo_to_str(userinfo: &UserInfo) -> ~str {
 fn query_from_str(rawquery: &str) -> Query {
     let mut query: Query = ~[];
     if !rawquery.is_empty() {
-        foreach p in rawquery.split_iter('&') {
+        for p in rawquery.split_iter('&') {
             let (k, v) = split_char_first(p, '=');
             query.push((decode_component(k), decode_component(v)));
         };
@@ -341,7 +341,7 @@ fn query_from_str(rawquery: &str) -> Query {
 
 pub fn query_to_str(query: &Query) -> ~str {
     let mut strvec = ~[];
-    foreach kv in query.iter() {
+    for kv in query.iter() {
         match kv {
             &(ref k, ref v) => {
                 strvec.push(fmt!("%s=%s",
@@ -356,7 +356,7 @@ pub fn query_to_str(query: &Query) -> ~str {
 
 // returns the scheme and the rest of the url, or a parsing error
 pub fn get_scheme(rawurl: &str) -> Result<(~str, ~str), ~str> {
-    foreach (i,c) in rawurl.iter().enumerate() {
+    for (i,c) in rawurl.iter().enumerate() {
         match c {
           'A' .. 'Z' | 'a' .. 'z' => loop,
           '0' .. '9' | '+' | '-' | '.' => {
@@ -418,7 +418,7 @@ fn get_authority(rawurl: &str) ->
     let mut begin = 2;
     let mut end = len;
 
-    foreach (i,c) in rawurl.iter().enumerate() {
+    for (i,c) in rawurl.iter().enumerate() {
         if i < 2 { loop; } // ignore the leading //
 
         // deal with input class first
@@ -563,7 +563,7 @@ fn get_path(rawurl: &str, authority: bool) ->
     Result<(~str, ~str), ~str> {
     let len = rawurl.len();
     let mut end = len;
-    foreach (i,c) in rawurl.iter().enumerate() {
+    for (i,c) in rawurl.iter().enumerate() {
         match c {
           'A' .. 'Z' | 'a' .. 'z' | '0' .. '9' | '&' |'\'' | '(' | ')' | '.'
           | '@' | ':' | '%' | '/' | '+' | '!' | '*' | ',' | ';' | '='
diff --git a/src/libextra/workcache.rs b/src/libextra/workcache.rs
index d28407a984a..0256519abb7 100644
--- a/src/libextra/workcache.rs
+++ b/src/libextra/workcache.rs
@@ -286,7 +286,7 @@ impl<'self> Prep<'self> {
     }
 
     fn all_fresh(&self, cat: &str, map: &WorkMap) -> bool {
-        foreach (k, v) in map.iter() {
+        for (k, v) in map.iter() {
             if ! self.is_fresh(cat, k.kind, k.name, *v) {
                 return false;
             }