diff --git a/src/compiletest/compiletest.rs b/src/compiletest/compiletest.rs index 583d9249b3547..67f8dfa1511ff 100644 --- a/src/compiletest/compiletest.rs +++ b/src/compiletest/compiletest.rs @@ -295,7 +295,7 @@ pub fn make_tests(config: &Config) -> Vec { let file = file.clone(); debug!("inspecting file {}", file.display()); if is_test(config, &file) { - let t = make_test(config, &file, || { + let t = make_test(config, &file, ref || { match config.mode { Codegen => make_metrics_test_closure(config, &file), _ => make_test_closure(config, &file) diff --git a/src/compiletest/header.rs b/src/compiletest/header.rs index f6cd217b580cd..7780e591c2648 100644 --- a/src/compiletest/header.rs +++ b/src/compiletest/header.rs @@ -57,7 +57,7 @@ pub fn load_props(testfile: &Path) -> TestProps { let mut no_pretty_expanded = false; let mut pretty_mode = None; let mut pretty_compare_only = false; - iter_header(testfile, |ln| { + iter_header(testfile, ref |ln| { match parse_error_pattern(ln) { Some(ep) => error_patterns.push(ep), None => () diff --git a/src/compiletest/runtest.rs b/src/compiletest/runtest.rs index 94b6ea0d7b449..51611ea9bcbd6 100644 --- a/src/compiletest/runtest.rs +++ b/src/compiletest/runtest.rs @@ -643,13 +643,13 @@ fn parse_debugger_commands(file_path: &Path, debugger_prefix: &str) header::parse_name_value_directive( line.as_slice(), - command_directive.as_slice()).map(|cmd| { + command_directive.as_slice()).map(ref |cmd| { commands.push(cmd) }); header::parse_name_value_directive( line.as_slice(), - check_directive.as_slice()).map(|cmd| { + check_directive.as_slice()).map(ref |cmd| { check_lines.push(cmd) }); } diff --git a/src/doc/guide-container.md b/src/doc/guide-container.md index 1733f4934c0c2..9516acf7674cc 100644 --- a/src/doc/guide-container.md +++ b/src/doc/guide-container.md @@ -156,7 +156,7 @@ into a single value: ~~~ let xs = [1i, 9, 2, 3, 14, 12]; -let result = xs.iter().fold(0, |accumulator, item| accumulator - *item); +let result = xs.iter().fold(0, ref |accumulator, item| accumulator - *item); assert_eq!(result, -41); ~~~ @@ -165,7 +165,7 @@ Most adaptors return an adaptor object implementing the `Iterator` trait itself: ~~~ let xs = [1i, 9, 2, 3, 14, 12]; let ys = [5i, 2, 1, 8]; -let sum = xs.iter().chain(ys.iter()).fold(0, |a, b| a + *b); +let sum = xs.iter().chain(ys.iter()).fold(0, ref |a, b| a + *b); assert_eq!(sum, 57); ~~~ @@ -184,7 +184,7 @@ let xs = [1i,2,3,4,5]; let mut calls = 0i; { - let it = xs.iter().scan((), |_, x| { + let it = xs.iter().scan((), ref |_, x| { calls += 1; if *x < 3 { Some(x) } else { None }}); @@ -266,7 +266,7 @@ Iterators offer generic conversion to containers with the `collect` adaptor: ~~~ let xs = [0i, 1, 1, 2, 3, 5, 8]; -let ys = xs.iter().rev().skip(1).map(|&x| x * 2).collect::>(); +let ys = xs.iter().rev().skip(1).map(ref |&x| x * 2).collect::>(); assert_eq!(ys, vec![10, 6, 4, 2, 2, 0]); ~~~ @@ -365,7 +365,7 @@ The `chain`, `map`, `filter`, `filter_map` and `inspect` adaptors are ~~~ let xs = [1i, 2, 3, 4]; let ys = [5i, 6, 7, 8]; -let mut it = xs.iter().chain(ys.iter()).map(|&x| x * 2); +let mut it = xs.iter().chain(ys.iter()).map(ref |&x| x * 2); println!("{}", it.next()); // prints `Some(2)` diff --git a/src/liballoc/heap.rs b/src/liballoc/heap.rs index 3175c516d8eff..ed5804b68955b 100644 --- a/src/liballoc/heap.rs +++ b/src/liballoc/heap.rs @@ -331,7 +331,7 @@ mod bench { #[bench] fn alloc_owned_small(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { box 10i }) } diff --git a/src/libarena/lib.rs b/src/libarena/lib.rs index 5d316cdb51e37..d9ec4e4286bff 100644 --- a/src/libarena/lib.rs +++ b/src/libarena/lib.rs @@ -316,8 +316,8 @@ fn test_arena_alloc_nested() { let arena = Arena::new(); - let result = arena.alloc(|| Outer { - inner: arena.alloc(|| Inner { value: 10 }) + let result = arena.alloc(ref || Outer { + inner: arena.alloc(ref || Inner { value: 10 }) }); assert_eq!(result.inner.value, 10); @@ -527,7 +527,7 @@ mod tests { #[bench] pub fn bench_copy(b: &mut Bencher) { let arena = TypedArena::new(); - b.iter(|| { + b.iter(ref || { arena.alloc(Point { x: 1, y: 2, @@ -538,7 +538,7 @@ mod tests { #[bench] pub fn bench_copy_nonarena(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { box Point { x: 1, y: 2, @@ -550,8 +550,8 @@ mod tests { #[bench] pub fn bench_copy_old_arena(b: &mut Bencher) { let arena = Arena::new(); - b.iter(|| { - arena.alloc(|| { + b.iter(ref || { + arena.alloc(ref || { Point { x: 1, y: 2, @@ -580,7 +580,7 @@ mod tests { #[bench] pub fn bench_noncopy(b: &mut Bencher) { let arena = TypedArena::new(); - b.iter(|| { + b.iter(ref || { arena.alloc(Noncopy { string: "hello world".to_string(), array: vec!( 1, 2, 3, 4, 5 ), @@ -590,7 +590,7 @@ mod tests { #[bench] pub fn bench_noncopy_nonarena(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { box Noncopy { string: "hello world".to_string(), array: vec!( 1, 2, 3, 4, 5 ), @@ -601,8 +601,8 @@ mod tests { #[bench] pub fn bench_noncopy_old_arena(b: &mut Bencher) { let arena = Arena::new(); - b.iter(|| { - arena.alloc(|| Noncopy { + b.iter(ref || { + arena.alloc(ref || Noncopy { string: "hello world".to_string(), array: vec!( 1, 2, 3, 4, 5 ), }) diff --git a/src/libcollections/bitv.rs b/src/libcollections/bitv.rs index e89d66578b0bb..02fbd85ded46e 100644 --- a/src/libcollections/bitv.rs +++ b/src/libcollections/bitv.rs @@ -458,8 +458,11 @@ impl Bitv { pub fn all(&self) -> bool { let mut last_word = !0u; // Check that every word but the last is all-ones... - self.mask_words(0).all(|(_, elem)| - { let tmp = last_word; last_word = elem; tmp == !0u }) && + self.mask_words(0).all(ref |(_, elem)| { + let tmp = last_word; + last_word = elem; + tmp == !0u + }) && // ...and that the last word is ones as far as it needs to be (last_word == ((1 << self.nbits % uint::BITS) - 1) || last_word == !0u) } @@ -2560,7 +2563,7 @@ mod tests { fn bench_uint_small(b: &mut Bencher) { let mut r = rng(); let mut bitv = 0 as uint; - b.iter(|| { + b.iter(ref || { bitv |= 1 << ((r.next_u32() as uint) % uint::BITS); &bitv }) @@ -2570,7 +2573,7 @@ mod tests { fn bench_bitv_big(b: &mut Bencher) { let mut r = rng(); let mut bitv = Bitv::with_capacity(BENCH_BITS, false); - b.iter(|| { + b.iter(ref || { bitv.set((r.next_u32() as uint) % BENCH_BITS, true); &bitv }) @@ -2580,7 +2583,7 @@ mod tests { fn bench_bitv_small(b: &mut Bencher) { let mut r = rng(); let mut bitv = Bitv::with_capacity(uint::BITS, false); - b.iter(|| { + b.iter(ref || { bitv.set((r.next_u32() as uint) % uint::BITS, true); &bitv }) @@ -2590,7 +2593,7 @@ mod tests { fn bench_bitv_set_small(b: &mut Bencher) { let mut r = rng(); let mut bitv = BitvSet::new(); - b.iter(|| { + b.iter(ref || { bitv.insert((r.next_u32() as uint) % uint::BITS); &bitv }) @@ -2600,7 +2603,7 @@ mod tests { fn bench_bitv_set_big(b: &mut Bencher) { let mut r = rng(); let mut bitv = BitvSet::new(); - b.iter(|| { + b.iter(ref || { bitv.insert((r.next_u32() as uint) % BENCH_BITS); &bitv }) @@ -2610,7 +2613,7 @@ mod tests { fn bench_bitv_big_union(b: &mut Bencher) { let mut b1 = Bitv::with_capacity(BENCH_BITS, false); let b2 = Bitv::with_capacity(BENCH_BITS, false); - b.iter(|| { + b.iter(ref || { b1.union(&b2); }) } @@ -2618,7 +2621,7 @@ mod tests { #[bench] fn bench_btv_small_iter(b: &mut Bencher) { let bitv = Bitv::with_capacity(uint::BITS, false); - b.iter(|| { + b.iter(ref || { let mut _sum = 0; for pres in bitv.iter() { _sum += pres as uint; @@ -2629,7 +2632,7 @@ mod tests { #[bench] fn bench_bitv_big_iter(b: &mut Bencher) { let bitv = Bitv::with_capacity(BENCH_BITS, false); - b.iter(|| { + b.iter(ref || { let mut _sum = 0; for pres in bitv.iter() { _sum += pres as uint; @@ -2641,7 +2644,7 @@ mod tests { fn bench_bitvset_iter(b: &mut Bencher) { let bitv = BitvSet::from_bitv(from_fn(BENCH_BITS, |idx| {idx % 3 == 0})); - b.iter(|| { + b.iter(ref || { let mut _sum = 0; for idx in bitv.iter() { _sum += idx; diff --git a/src/libcollections/btree.rs b/src/libcollections/btree.rs index ca4b4ee6e8310..f947376ce8dcb 100644 --- a/src/libcollections/btree.rs +++ b/src/libcollections/btree.rs @@ -386,9 +386,9 @@ impl Leaf { if self.elts.len() > ub { let midpoint_opt = self.elts.remove(ub / 2); let midpoint = midpoint_opt.unwrap(); - let (left_leaf, right_leaf) = self.elts.partition(|le| - le.key.cmp(&midpoint.key.clone()) - == Less); + let (left_leaf, right_leaf) = self.elts.partition(ref |le| { + le.key.cmp(&midpoint.key.clone()) == Less + }); let branch_return = Node::new_branch(vec!(BranchElt::new(midpoint.key.clone(), midpoint.value.clone(), box Node::new_leaf(left_leaf))), @@ -613,9 +613,11 @@ impl Branch { //and two children. if self.elts.len() > ub { let midpoint = self.elts.remove(ub / 2).unwrap(); - let (new_left, new_right) = self.clone().elts.partition(|le| - midpoint.key.cmp(&le.key) - == Greater); + let (new_left, new_right) = self.clone() + .elts + .partition(ref |le| { + midpoint.key.cmp(&le.key) == Greater + }); new_branch = Node::new_branch( vec!(BranchElt::new(midpoint.clone().key, midpoint.clone().value, diff --git a/src/libcollections/deque.rs b/src/libcollections/deque.rs index c56b265b43aca..9e37f883db2e0 100644 --- a/src/libcollections/deque.rs +++ b/src/libcollections/deque.rs @@ -30,7 +30,7 @@ pub mod bench { } // measure - b.iter(|| { + b.iter(ref || { let k = rng.gen::() % n; map.insert(k, 1); map.remove(&k); @@ -48,7 +48,7 @@ pub mod bench { // measure let mut i = 1; - b.iter(|| { + b.iter(ref || { map.insert(i, 1); map.remove(&i); i = (i + 2) % n; @@ -70,7 +70,7 @@ pub mod bench { // measure let mut i = 0; - b.iter(|| { + b.iter(ref || { map.find(&keys[i]); i = (i + 1) % n; }) @@ -86,7 +86,7 @@ pub mod bench { // measure let mut i = 0; - b.iter(|| { + b.iter(ref || { let x = map.find(&i); i = (i + 1) % n; x diff --git a/src/libcollections/dlist.rs b/src/libcollections/dlist.rs index 6f47780a0e6f5..be7a3502f0d9c 100644 --- a/src/libcollections/dlist.rs +++ b/src/libcollections/dlist.rs @@ -1215,7 +1215,7 @@ mod tests { #[bench] fn bench_collect_into(b: &mut test::Bencher) { let v = &[0i, ..64]; - b.iter(|| { + b.iter(ref || { let _: DList = v.iter().map(|x| *x).collect(); }) } @@ -1223,7 +1223,7 @@ mod tests { #[bench] fn bench_push_front(b: &mut test::Bencher) { let mut m: DList = DList::new(); - b.iter(|| { + b.iter(ref || { m.push_front(0); }) } @@ -1231,7 +1231,7 @@ mod tests { #[bench] fn bench_push_back(b: &mut test::Bencher) { let mut m: DList = DList::new(); - b.iter(|| { + b.iter(ref || { m.push_back(0); }) } @@ -1239,7 +1239,7 @@ mod tests { #[bench] fn bench_push_back_pop_back(b: &mut test::Bencher) { let mut m: DList = DList::new(); - b.iter(|| { + b.iter(ref || { m.push_back(0); m.pop_back(); }) @@ -1248,7 +1248,7 @@ mod tests { #[bench] fn bench_push_front_pop_front(b: &mut test::Bencher) { let mut m: DList = DList::new(); - b.iter(|| { + b.iter(ref || { m.push_front(0); m.pop_front(); }) @@ -1259,7 +1259,7 @@ mod tests { let mut m: DList = DList::new(); m.push_front(0i); m.push_front(1); - b.iter(|| { + b.iter(ref || { m.rotate_forward(); }) } @@ -1269,7 +1269,7 @@ mod tests { let mut m: DList = DList::new(); m.push_front(0i); m.push_front(1); - b.iter(|| { + b.iter(ref || { m.rotate_backward(); }) } @@ -1278,7 +1278,7 @@ mod tests { fn bench_iter(b: &mut test::Bencher) { let v = &[0i, ..128]; let m: DList = v.iter().map(|&x|x).collect(); - b.iter(|| { + b.iter(ref || { assert!(m.iter().count() == 128); }) } @@ -1286,7 +1286,7 @@ mod tests { fn bench_iter_mut(b: &mut test::Bencher) { let v = &[0i, ..128]; let mut m: DList = v.iter().map(|&x|x).collect(); - b.iter(|| { + b.iter(ref || { assert!(m.mut_iter().count() == 128); }) } @@ -1294,7 +1294,7 @@ mod tests { fn bench_iter_rev(b: &mut test::Bencher) { let v = &[0i, ..128]; let m: DList = v.iter().map(|&x|x).collect(); - b.iter(|| { + b.iter(ref || { assert!(m.iter().rev().count() == 128); }) } @@ -1302,7 +1302,7 @@ mod tests { fn bench_iter_mut_rev(b: &mut test::Bencher) { let v = &[0i, ..128]; let mut m: DList = v.iter().map(|&x|x).collect(); - b.iter(|| { + b.iter(ref || { assert!(m.mut_iter().rev().count() == 128); }) } diff --git a/src/libcollections/hash/sip.rs b/src/libcollections/hash/sip.rs index b31d811c2c966..e06b1fcca3dad 100644 --- a/src/libcollections/hash/sip.rs +++ b/src/libcollections/hash/sip.rs @@ -507,7 +507,7 @@ mod tests { #[bench] fn bench_str_under_8_bytes(b: &mut Bencher) { let s = "foo"; - b.iter(|| { + b.iter(ref || { assert_eq!(hash(&s), 16262950014981195938); }) } @@ -515,7 +515,7 @@ mod tests { #[bench] fn bench_str_of_8_bytes(b: &mut Bencher) { let s = "foobar78"; - b.iter(|| { + b.iter(ref || { assert_eq!(hash(&s), 4898293253460910787); }) } @@ -523,7 +523,7 @@ mod tests { #[bench] fn bench_str_over_8_bytes(b: &mut Bencher) { let s = "foobarbaz0"; - b.iter(|| { + b.iter(ref || { assert_eq!(hash(&s), 10581415515220175264); }) } @@ -536,7 +536,7 @@ exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla \ pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui \ officia deserunt mollit anim id est laborum."; - b.iter(|| { + b.iter(ref || { assert_eq!(hash(&s), 17717065544121360093); }) } @@ -544,7 +544,7 @@ officia deserunt mollit anim id est laborum."; #[bench] fn bench_u64(b: &mut Bencher) { let u = 16262950014981195938u64; - b.iter(|| { + b.iter(ref || { assert_eq!(hash(&u), 5254097107239593357); }) } diff --git a/src/libcollections/ringbuf.rs b/src/libcollections/ringbuf.rs index 9d074813343b3..85f4bca5f2591 100644 --- a/src/libcollections/ringbuf.rs +++ b/src/libcollections/ringbuf.rs @@ -694,7 +694,7 @@ mod tests { #[bench] fn bench_new(b: &mut test::Bencher) { - b.iter(|| { + b.iter(ref || { let _: RingBuf = RingBuf::new(); }) } @@ -702,7 +702,7 @@ mod tests { #[bench] fn bench_push_back(b: &mut test::Bencher) { let mut deq = RingBuf::new(); - b.iter(|| { + b.iter(ref || { deq.push_back(0i); }) } @@ -710,7 +710,7 @@ mod tests { #[bench] fn bench_push_front(b: &mut test::Bencher) { let mut deq = RingBuf::new(); - b.iter(|| { + b.iter(ref || { deq.push_front(0i); }) } @@ -718,7 +718,7 @@ mod tests { #[bench] fn bench_grow(b: &mut test::Bencher) { let mut deq = RingBuf::new(); - b.iter(|| { + b.iter(ref || { for _ in range(0i, 65) { deq.push_front(1i); } diff --git a/src/libcollections/slice.rs b/src/libcollections/slice.rs index 7190bbfbc012c..4128afbb34202 100644 --- a/src/libcollections/slice.rs +++ b/src/libcollections/slice.rs @@ -187,11 +187,11 @@ impl Iterator<(uint, uint)> for ElementSwaps { // Find the index of the largest mobile element: // The direction should point into the vector, and the // swap should be with a smaller `size` element. - let max = self.sdir.iter().map(|&x| x).enumerate() - .filter(|&(i, sd)| + let max = self.sdir.iter().map(ref |&x| x).enumerate() + .filter(ref |&(i, sd)| new_pos(i, sd.dir) < self.sdir.len() && self.sdir[new_pos(i, sd.dir)].size < sd.size) - .max_by(|&(_, sd)| sd.size); + .max_by(ref |&(_, sd)| sd.size); match max { Some((i, sd)) => { let j = new_pos(i, sd.dir); @@ -2161,7 +2161,7 @@ mod bench { // out. let v = Vec::from_fn(100, |i| i ^ (i << 1) ^ (i >> 1)); - b.iter(|| { + b.iter(ref || { let mut sum = 0; for x in v.iter() { sum += *x; @@ -2175,7 +2175,7 @@ mod bench { fn mut_iterator(b: &mut Bencher) { let mut v = Vec::from_elem(100, 0i); - b.iter(|| { + b.iter(ref || { let mut i = 0i; for x in v.mut_iter() { *x = i; @@ -2188,7 +2188,7 @@ mod bench { fn concat(b: &mut Bencher) { let xss: Vec> = Vec::from_fn(100, |i| range(0u, i).collect()); - b.iter(|| { + b.iter(ref || { xss.as_slice().concat_vec() }); } @@ -2197,7 +2197,7 @@ mod bench { fn connect(b: &mut Bencher) { let xss: Vec> = Vec::from_fn(100, |i| range(0u, i).collect()); - b.iter(|| { + b.iter(ref || { xss.as_slice().connect_vec(&0) }); } @@ -2205,7 +2205,7 @@ mod bench { #[bench] fn push(b: &mut Bencher) { let mut vec: Vec = vec![]; - b.iter(|| { + b.iter(ref || { vec.push(0); &vec }) @@ -2214,7 +2214,7 @@ mod bench { #[bench] fn starts_with_same_vector(b: &mut Bencher) { let vec: Vec = Vec::from_fn(100, |i| i); - b.iter(|| { + b.iter(ref || { vec.as_slice().starts_with(vec.as_slice()) }) } @@ -2222,7 +2222,7 @@ mod bench { #[bench] fn starts_with_single_element(b: &mut Bencher) { let vec: Vec = vec![0]; - b.iter(|| { + b.iter(ref || { vec.as_slice().starts_with(vec.as_slice()) }) } @@ -2232,7 +2232,7 @@ mod bench { let vec: Vec = Vec::from_fn(100, |i| i); let mut match_vec: Vec = Vec::from_fn(99, |i| i); match_vec.push(0); - b.iter(|| { + b.iter(ref || { vec.as_slice().starts_with(match_vec.as_slice()) }) } @@ -2240,7 +2240,7 @@ mod bench { #[bench] fn ends_with_same_vector(b: &mut Bencher) { let vec: Vec = Vec::from_fn(100, |i| i); - b.iter(|| { + b.iter(ref || { vec.as_slice().ends_with(vec.as_slice()) }) } @@ -2248,7 +2248,7 @@ mod bench { #[bench] fn ends_with_single_element(b: &mut Bencher) { let vec: Vec = vec![0]; - b.iter(|| { + b.iter(ref || { vec.as_slice().ends_with(vec.as_slice()) }) } @@ -2258,7 +2258,7 @@ mod bench { let vec: Vec = Vec::from_fn(100, |i| i); let mut match_vec: Vec = Vec::from_fn(100, |i| i); match_vec.as_mut_slice()[0] = 200; - b.iter(|| { + b.iter(ref || { vec.as_slice().starts_with(match_vec.as_slice()) }) } @@ -2266,21 +2266,21 @@ mod bench { #[bench] fn contains_last_element(b: &mut Bencher) { let vec: Vec = Vec::from_fn(100, |i| i); - b.iter(|| { + b.iter(ref || { vec.contains(&99u) }) } #[bench] fn zero_1kb_from_elem(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { Vec::from_elem(1024, 0u8) }); } #[bench] fn zero_1kb_set_memory(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let mut v: Vec = Vec::with_capacity(1024); unsafe { let vp = v.as_mut_ptr(); @@ -2293,7 +2293,7 @@ mod bench { #[bench] fn zero_1kb_loop_set(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let mut v: Vec = Vec::with_capacity(1024); unsafe { v.set_len(1024); @@ -2306,7 +2306,7 @@ mod bench { #[bench] fn zero_1kb_mut_iter(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let mut v = Vec::with_capacity(1024); unsafe { v.set_len(1024); @@ -2321,7 +2321,7 @@ mod bench { #[bench] fn random_inserts(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { let mut v = Vec::from_elem(30, (0u, 0u)); for _ in range(0u, 100) { let l = v.len(); @@ -2333,7 +2333,7 @@ mod bench { #[bench] fn random_removes(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { let mut v = Vec::from_elem(130, (0u, 0u)); for _ in range(0u, 100) { let l = v.len(); @@ -2345,7 +2345,7 @@ mod bench { #[bench] fn sort_random_small(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { let mut v = rng.gen_iter::().take(5).collect::>(); v.as_mut_slice().sort(); }); @@ -2355,7 +2355,7 @@ mod bench { #[bench] fn sort_random_medium(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { let mut v = rng.gen_iter::().take(100).collect::>(); v.as_mut_slice().sort(); }); @@ -2365,7 +2365,7 @@ mod bench { #[bench] fn sort_random_large(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { let mut v = rng.gen_iter::().take(10000).collect::>(); v.as_mut_slice().sort(); }); @@ -2375,7 +2375,7 @@ mod bench { #[bench] fn sort_sorted(b: &mut Bencher) { let mut v = Vec::from_fn(10000, |i| i); - b.iter(|| { + b.iter(ref || { v.sort(); }); b.bytes = (v.len() * mem::size_of_val(v.get(0))) as u64; @@ -2386,7 +2386,7 @@ mod bench { #[bench] fn sort_big_random_small(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { let mut v = rng.gen_iter::().take(5) .collect::>(); v.sort(); @@ -2397,7 +2397,7 @@ mod bench { #[bench] fn sort_big_random_medium(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { let mut v = rng.gen_iter::().take(100) .collect::>(); v.sort(); @@ -2408,7 +2408,7 @@ mod bench { #[bench] fn sort_big_random_large(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { let mut v = rng.gen_iter::().take(10000) .collect::>(); v.sort(); @@ -2419,7 +2419,7 @@ mod bench { #[bench] fn sort_big_sorted(b: &mut Bencher) { let mut v = Vec::from_fn(10000u, |i| (i, i, i, i)); - b.iter(|| { + b.iter(ref || { v.sort(); }); b.bytes = (v.len() * mem::size_of_val(v.get(0))) as u64; diff --git a/src/libcollections/str.rs b/src/libcollections/str.rs index 9ca1011f1666a..13bc4e958328d 100644 --- a/src/libcollections/str.rs +++ b/src/libcollections/str.rs @@ -261,7 +261,7 @@ impl<'a> Iterator for Decompositions<'a> { for ch in self.iter { let buffer = &mut self.buffer; let sorted = &mut self.sorted; - decomposer(ch, |d| { + decomposer(ch, ref |d| { let class = unicode::char::canonical_combining_class(d); if class == 0 && !*sorted { canonical_sort(buffer.as_mut_slice()); @@ -701,7 +701,7 @@ pub trait StrAllocating: Str { let me = self.as_slice(); let mut out = String::with_capacity(me.len()); for c in me.chars() { - c.escape_default(|c| out.push_char(c)); + c.escape_default(ref |c| out.push_char(c)); } out } @@ -711,7 +711,7 @@ pub trait StrAllocating: Str { let me = self.as_slice(); let mut out = String::with_capacity(me.len()); for c in me.chars() { - c.escape_unicode(|c| out.push_char(c)); + c.escape_unicode(ref |c| out.push_char(c)); } out } @@ -2372,14 +2372,14 @@ mod bench { fn char_iterator(b: &mut Bencher) { let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb"; - b.iter(|| s.chars().count()); + b.iter(ref || s.chars().count()); } #[bench] fn char_iterator_for(b: &mut Bencher) { let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb"; - b.iter(|| { + b.iter(ref || { for ch in s.chars() { black_box(ch) } }); } @@ -2393,21 +2393,21 @@ mod bench { Mary had a little lamb, Little lamb Mary had a little lamb, Little lamb"; - b.iter(|| s.chars().count()); + b.iter(ref || s.chars().count()); } #[bench] fn char_iterator_rev(b: &mut Bencher) { let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb"; - b.iter(|| s.chars().rev().count()); + b.iter(ref || s.chars().rev().count()); } #[bench] fn char_iterator_rev_for(b: &mut Bencher) { let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb"; - b.iter(|| { + b.iter(ref || { for ch in s.chars().rev() { black_box(ch) } }); } @@ -2417,7 +2417,7 @@ mod bench { let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb"; let len = s.char_len(); - b.iter(|| assert_eq!(s.char_indices().count(), len)); + b.iter(ref || assert_eq!(s.char_indices().count(), len)); } #[bench] @@ -2425,14 +2425,14 @@ mod bench { let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb"; let len = s.char_len(); - b.iter(|| assert_eq!(s.char_indices().rev().count(), len)); + b.iter(ref || assert_eq!(s.char_indices().rev().count(), len)); } #[bench] fn split_unicode_ascii(b: &mut Bencher) { let s = "ประเทศไทย中华Việt Namประเทศไทย中华Việt Nam"; - b.iter(|| assert_eq!(s.split('V').count(), 3)); + b.iter(ref || assert_eq!(s.split('V').count(), 3)); } #[bench] @@ -2447,7 +2447,7 @@ mod bench { } let s = "ประเทศไทย中华Việt Namประเทศไทย中华Việt Nam"; - b.iter(|| assert_eq!(s.split(NotAscii('V')).count(), 3)); + b.iter(ref || assert_eq!(s.split(NotAscii('V')).count(), 3)); } @@ -2456,7 +2456,7 @@ mod bench { let s = "Mary had a little lamb, Little lamb, little-lamb."; let len = s.split(' ').count(); - b.iter(|| assert_eq!(s.split(' ').count(), len)); + b.iter(ref || assert_eq!(s.split(' ').count(), len)); } #[bench] @@ -2473,7 +2473,7 @@ mod bench { let s = "Mary had a little lamb, Little lamb, little-lamb."; let len = s.split(' ').count(); - b.iter(|| assert_eq!(s.split(NotAscii(' ')).count(), len)); + b.iter(ref || assert_eq!(s.split(NotAscii(' ')).count(), len)); } #[bench] @@ -2482,7 +2482,7 @@ mod bench { let len = s.split(' ').count(); fn pred(c: char) -> bool { c == ' ' } - b.iter(|| assert_eq!(s.split(pred).count(), len)); + b.iter(ref || assert_eq!(s.split(pred).count(), len)); } #[bench] @@ -2490,7 +2490,7 @@ mod bench { let s = "Mary had a little lamb, Little lamb, little-lamb."; let len = s.split(' ').count(); - b.iter(|| assert_eq!(s.split(|c: char| c == ' ').count(), len)); + b.iter(ref || assert_eq!(s.split(|c: char| c == ' ').count(), len)); } #[bench] @@ -2498,7 +2498,7 @@ mod bench { let s = "Mary had a little lamb, Little lamb, little-lamb."; let len = s.split(' ').count(); - b.iter(|| assert_eq!(s.split(&[' ']).count(), len)); + b.iter(ref || assert_eq!(s.split(&[' ']).count(), len)); } #[bench] @@ -2508,7 +2508,7 @@ mod bench { Lorem ipsum dolor sit amet, consectetur. "; assert_eq!(100, s.len()); - b.iter(|| { + b.iter(ref || { is_utf8(s) }); } @@ -2517,7 +2517,7 @@ mod bench { fn is_utf8_100_multibyte(b: &mut Bencher) { let s = "𐌀𐌖𐌋𐌄𐌑𐌉ปรدولة الكويتทศไทย中华𐍅𐌿𐌻𐍆𐌹𐌻𐌰".as_bytes(); assert_eq!(100, s.len()); - b.iter(|| { + b.iter(ref || { is_utf8(s) }); } @@ -2527,7 +2527,7 @@ mod bench { let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb"; let sep = "→"; let v = [s, s, s, s, s, s, s, s, s, s]; - b.iter(|| { + b.iter(ref || { assert_eq!(v.connect(sep).len(), s.len() * 10 + sep.len() * 9); }) } @@ -2537,7 +2537,7 @@ mod bench { let haystack = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; let needle = "sit"; - b.iter(|| { + b.iter(ref || { assert!(haystack.contains(needle)); }) } @@ -2581,7 +2581,7 @@ leo suscipit, varius porttitor nulla porta. Pellentesque ut sem nec nisi euismod malesuada sollicitudin quam eu fermentum."; let needle = "english"; - b.iter(|| { + b.iter(ref || { assert!(!haystack.contains(needle)); }) } @@ -2591,7 +2591,7 @@ malesuada sollicitudin quam eu fermentum."; let haystack = "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"; let needle = "aaaaaaaab"; - b.iter(|| { + b.iter(ref || { assert!(!haystack.contains(needle)); }) } @@ -2601,7 +2601,7 @@ malesuada sollicitudin quam eu fermentum."; let haystack = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; let needle = "Lorem ipsum dolor sit amet, consectetur adipiscing elit."; - b.iter(|| { + b.iter(ref || { assert!(haystack.contains(needle)); }) } diff --git a/src/libcollections/string.rs b/src/libcollections/string.rs index 66973fd410079..60c6c1c329262 100644 --- a/src/libcollections/string.rs +++ b/src/libcollections/string.rs @@ -1142,7 +1142,7 @@ mod tests { #[bench] fn bench_with_capacity(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { String::with_capacity(100) }); } @@ -1150,7 +1150,7 @@ mod tests { #[bench] fn bench_push_str(b: &mut Bencher) { let s = "ศไทย中华Việt Nam; Mary had a little lamb, Little lamb"; - b.iter(|| { + b.iter(ref || { let mut r = String::new(); r.push_str(s); }); @@ -1162,7 +1162,7 @@ mod tests { Lorem ipsum dolor sit amet, consectetur. "; assert_eq!(100, s.len()); - b.iter(|| { + b.iter(ref || { let _ = String::from_utf8_lossy(s); }); } @@ -1171,7 +1171,7 @@ mod tests { fn from_utf8_lossy_100_multibyte(b: &mut Bencher) { let s = "𐌀𐌖𐌋𐌄𐌑𐌉ปรدولة الكويتทศไทย中华𐍅𐌿𐌻𐍆𐌹𐌻𐌰".as_bytes(); assert_eq!(100, s.len()); - b.iter(|| { + b.iter(ref || { let _ = String::from_utf8_lossy(s); }); } @@ -1179,7 +1179,7 @@ mod tests { #[bench] fn from_utf8_lossy_invalid(b: &mut Bencher) { let s = b"Hello\xC0\x80 There\xE6\x83 Goodbye"; - b.iter(|| { + b.iter(ref || { let _ = String::from_utf8_lossy(s); }); } @@ -1187,7 +1187,7 @@ mod tests { #[bench] fn from_utf8_lossy_100_invalid(b: &mut Bencher) { let s = Vec::from_elem(100, 0xF5u8); - b.iter(|| { + b.iter(ref || { let _ = String::from_utf8_lossy(s.as_slice()); }); } diff --git a/src/libcollections/treemap.rs b/src/libcollections/treemap.rs index 7787893925d53..689287ee6ca84 100644 --- a/src/libcollections/treemap.rs +++ b/src/libcollections/treemap.rs @@ -1445,7 +1445,7 @@ impl TreeNode { // Remove left horizontal link by rotating right fn skew(node: &mut Box>) { - if node.left.as_ref().map_or(false, |x| x.level == node.level) { + if node.left.as_ref().map_or(false, ref |x| x.level == node.level) { let mut save = node.left.take_unwrap(); swap(&mut node.left, &mut save.right); // save.right now None swap(node, &mut save); @@ -1456,8 +1456,9 @@ fn skew(node: &mut Box>) { // Remove dual horizontal link by rotating left and increasing level of // the parent fn split(node: &mut Box>) { - if node.right.as_ref().map_or(false, - |x| x.right.as_ref().map_or(false, |y| y.level == node.level)) { + if node.right.as_ref().map_or(false, ref |x| { + x.right.as_ref().map_or(false, ref |y| y.level == node.level) + }) { let mut save = node.right.take_unwrap(); swap(&mut node.right, &mut save.left); // save.left now None save.level += 1; @@ -2418,7 +2419,7 @@ mod test_set { for y in b.iter() { assert!(set_b.insert(*y)) } let mut i = 0; - f(&set_a, &set_b, |x| { + f(&set_a, &set_b, ref |x| { assert_eq!(*x, expected[i]); i += 1; true @@ -2445,7 +2446,7 @@ mod test_set { #[test] fn test_difference() { fn check_difference(a: &[int], b: &[int], expected: &[int]) { - check(a, b, expected, |x, y, f| x.difference(y).all(f)) + check(a, b, expected, ref |x, y, f| x.difference(y).all(f)) } check_difference([], [], []); @@ -2463,7 +2464,10 @@ mod test_set { fn test_symmetric_difference() { fn check_symmetric_difference(a: &[int], b: &[int], expected: &[int]) { - check(a, b, expected, |x, y, f| x.symmetric_difference(y).all(f)) + check(a, + b, + expected, + ref |x, y, f| x.symmetric_difference(y).all(f)) } check_symmetric_difference([], [], []); @@ -2478,7 +2482,7 @@ mod test_set { fn test_union() { fn check_union(a: &[int], b: &[int], expected: &[int]) { - check(a, b, expected, |x, y, f| x.union(y).all(f)) + check(a, b, expected, ref |x, y, f| x.union(y).all(f)) } check_union([], [], []); diff --git a/src/libcollections/trie.rs b/src/libcollections/trie.rs index 911262e90cba7..0273d78ab86d7 100644 --- a/src/libcollections/trie.rs +++ b/src/libcollections/trie.rs @@ -215,12 +215,18 @@ impl TrieMap { /// let map: TrieMap<&str> = [(1, "a"), (2, "b"), (3, "c")].iter().map(|&x| x).collect(); /// /// let mut vec = Vec::new(); - /// assert_eq!(true, map.each_reverse(|&key, &value| { vec.push((key, value)); true })); + /// assert_eq!(true, map.each_reverse(ref |&key, &value| { + /// vec.push((key, value)); + /// true + /// })); /// assert_eq!(vec, vec![(3, "c"), (2, "b"), (1, "a")]); /// /// // Stop when we reach 2 /// let mut vec = Vec::new(); - /// assert_eq!(false, map.each_reverse(|&key, &value| { vec.push(value); key != 2 })); + /// assert_eq!(false, map.each_reverse(ref |&key, &value| { + /// vec.push(value); + /// key != 2 + /// })); /// assert_eq!(vec, vec!["c", "b"]); /// ``` #[inline] @@ -640,12 +646,12 @@ impl TrieSet { /// let set: TrieSet = [1, 2, 3, 4, 5].iter().map(|&x| x).collect(); /// /// let mut vec = Vec::new(); - /// assert_eq!(true, set.each_reverse(|&x| { vec.push(x); true })); + /// assert_eq!(true, set.each_reverse(ref |&x| { vec.push(x); true })); /// assert_eq!(vec, vec![5, 4, 3, 2, 1]); /// /// // Stop when we reach 3 /// let mut vec = Vec::new(); - /// assert_eq!(false, set.each_reverse(|&x| { vec.push(x); x != 3 })); + /// assert_eq!(false, set.each_reverse(ref |&x| { vec.push(x); x != 3 })); /// assert_eq!(vec, vec![5, 4, 3]); /// ``` #[inline] @@ -762,7 +768,9 @@ impl TrieNode { fn each_reverse<'a>(&'a self, f: |&uint, &'a T| -> bool) -> bool { for elt in self.children.iter().rev() { match *elt { - Internal(ref x) => if !x.each_reverse(|i,t| f(i,t)) { return false }, + Internal(ref x) => if !x.each_reverse(ref |i,t| f(i,t)) { + return false + }, External(k, ref v) => if !f(&k, v) { return false }, Nothing => () } @@ -1113,7 +1121,7 @@ mod test_map { assert!(m.insert(1, 2)); let mut n = 4; - m.each_reverse(|k, v| { + m.each_reverse(ref |k, v| { assert_eq!(*k, n); assert_eq!(*v, n * 2); n -= 1; @@ -1130,7 +1138,7 @@ mod test_map { } let mut n = uint::MAX - 1; - m.each_reverse(|k, v| { + m.each_reverse(ref |k, v| { if n == uint::MAX - 5000 { false } else { assert!(n > uint::MAX - 5000); @@ -1448,7 +1456,7 @@ mod bench_map { m.insert(rng.gen(), rng.gen()); } - b.iter(|| for _ in m.iter() {}) + b.iter(ref || for _ in m.iter() {}) } #[bench] @@ -1459,7 +1467,7 @@ mod bench_map { m.insert(rng.gen(), rng.gen()); } - b.iter(|| for _ in m.iter() {}) + b.iter(ref || for _ in m.iter() {}) } #[bench] @@ -1470,7 +1478,7 @@ mod bench_map { m.insert(rng.gen(), rng.gen()); } - b.iter(|| { + b.iter(ref || { for _ in range(0u, 10) { m.lower_bound(rng.gen()); } @@ -1485,7 +1493,7 @@ mod bench_map { m.insert(rng.gen(), rng.gen()); } - b.iter(|| { + b.iter(ref || { for _ in range(0u, 10) { m.upper_bound(rng.gen()); } @@ -1497,7 +1505,7 @@ mod bench_map { let mut m = TrieMap::<[uint, .. 10]>::new(); let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { for _ in range(0u, 1000) { m.insert(rng.gen(), [1, .. 10]); } @@ -1508,7 +1516,7 @@ mod bench_map { let mut m = TrieMap::<[uint, .. 10]>::new(); let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { for _ in range(0u, 1000) { // only have the last few bits set. m.insert(rng.gen::() & 0xff_ff, [1, .. 10]); @@ -1521,7 +1529,7 @@ mod bench_map { let mut m = TrieMap::<()>::new(); let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { for _ in range(0u, 1000) { m.insert(rng.gen(), ()); } @@ -1532,7 +1540,7 @@ mod bench_map { let mut m = TrieMap::<()>::new(); let mut rng = weak_rng(); - b.iter(|| { + b.iter(ref || { for _ in range(0u, 1000) { // only have the last few bits set. m.insert(rng.gen::() & 0xff_ff, ()); diff --git a/src/libcollections/vec.rs b/src/libcollections/vec.rs index 6e4f2bc54819a..9b859605cacc9 100644 --- a/src/libcollections/vec.rs +++ b/src/libcollections/vec.rs @@ -2012,7 +2012,7 @@ mod tests { #[bench] fn bench_new(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let v: Vec = Vec::new(); assert_eq!(v.len(), 0); assert_eq!(v.capacity(), 0); @@ -2022,7 +2022,7 @@ mod tests { fn do_bench_with_capacity(b: &mut Bencher, src_len: uint) { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let v: Vec = Vec::with_capacity(src_len); assert_eq!(v.len(), 0); assert_eq!(v.capacity(), src_len); @@ -2052,7 +2052,7 @@ mod tests { fn do_bench_from_fn(b: &mut Bencher, src_len: uint) { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let dst = Vec::from_fn(src_len, |i| i); assert_eq!(dst.len(), src_len); assert!(dst.iter().enumerate().all(|(i, x)| i == *x)); @@ -2082,7 +2082,7 @@ mod tests { fn do_bench_from_elem(b: &mut Bencher, src_len: uint) { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let dst: Vec = Vec::from_elem(src_len, 5); assert_eq!(dst.len(), src_len); assert!(dst.iter().all(|x| *x == 5)); @@ -2114,7 +2114,7 @@ mod tests { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let dst = Vec::from_slice(src.clone().as_slice()); assert_eq!(dst.len(), src_len); assert!(dst.iter().enumerate().all(|(i, x)| i == *x)); @@ -2146,7 +2146,7 @@ mod tests { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let dst: Vec = FromIterator::from_iter(src.clone().move_iter()); assert_eq!(dst.len(), src_len); assert!(dst.iter().enumerate().all(|(i, x)| i == *x)); @@ -2179,7 +2179,7 @@ mod tests { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let mut dst = dst.clone(); dst.extend(src.clone().move_iter()); assert_eq!(dst.len(), dst_len + src_len); @@ -2228,7 +2228,7 @@ mod tests { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let mut dst = dst.clone(); dst.push_all(src.as_slice()); assert_eq!(dst.len(), dst_len + src_len); @@ -2277,7 +2277,7 @@ mod tests { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let mut dst = dst.clone(); dst.push_all_move(src.clone()); assert_eq!(dst.len(), dst_len + src_len); @@ -2325,7 +2325,7 @@ mod tests { b.bytes = src_len as u64; - b.iter(|| { + b.iter(ref || { let dst = src.clone(); assert_eq!(dst.len(), src_len); assert!(dst.iter().enumerate().all(|(i, x)| i == *x)); @@ -2358,7 +2358,7 @@ mod tests { b.bytes = (times * src_len) as u64; - b.iter(|| { + b.iter(ref || { let mut dst = dst.clone(); for _ in range(0, times) { diff --git a/src/libcore/fmt/float.rs b/src/libcore/fmt/float.rs index 3a07e43e50993..3fdb86c403f4d 100644 --- a/src/libcore/fmt/float.rs +++ b/src/libcore/fmt/float.rs @@ -352,12 +352,12 @@ pub fn float_to_str_bytes_common( let mut filler = Filler { buf: buf, end: &mut end }; match sign { SignNeg => { - let _ = format_args!(|args| { + let _ = format_args!(ref |args| { fmt::write(&mut filler, args) }, "{:-}", exp); } SignNone | SignAll => { - let _ = format_args!(|args| { + let _ = format_args!(ref |args| { fmt::write(&mut filler, args) }, "{}", exp); } diff --git a/src/libcore/iter.rs b/src/libcore/iter.rs index b8ed8bdf92394..abfbcf3cb8f6a 100644 --- a/src/libcore/iter.rs +++ b/src/libcore/iter.rs @@ -1691,8 +1691,8 @@ impl<'a, A, T: Iterator, B, U: Iterator> Iterator for FlatMap<'a, A, T, return Some(x) } } - match self.iter.next().map(|x| (self.f)(x)) { - None => return self.backiter.as_mut().and_then(|it| it.next()), + match self.iter.next().map(ref |x| (self.f)(x)) { + None => return self.backiter.as_mut().and_then(ref |it| it.next()), next => self.frontiter = next, } } @@ -1723,8 +1723,12 @@ impl<'a, y => return y } } - match self.iter.next_back().map(|x| (self.f)(x)) { - None => return self.frontiter.as_mut().and_then(|it| it.next_back()), + match self.iter.next_back().map(ref |x| (self.f)(x)) { + None => { + return self.frontiter + .as_mut() + .and_then(ref |it| it.next_back()) + } next => self.backiter = next, } } diff --git a/src/libcore/slice.rs b/src/libcore/slice.rs index 826f25101fb70..5b78c8231751c 100644 --- a/src/libcore/slice.rs +++ b/src/libcore/slice.rs @@ -1141,7 +1141,7 @@ impl<'a, T> Iterator<&'a [T]> for Splits<'a, T> { fn next(&mut self) -> Option<&'a [T]> { if self.finished { return None; } - match self.v.iter().position(|x| (self.pred)(x)) { + match self.v.iter().position(ref |x| (self.pred)(x)) { None => { self.finished = true; Some(self.v) @@ -1170,7 +1170,7 @@ impl<'a, T> DoubleEndedIterator<&'a [T]> for Splits<'a, T> { fn next_back(&mut self) -> Option<&'a [T]> { if self.finished { return None; } - match self.v.iter().rposition(|x| (self.pred)(x)) { + match self.v.iter().rposition(ref |x| (self.pred)(x)) { None => { self.finished = true; Some(self.v) @@ -1200,7 +1200,7 @@ impl<'a, T> Iterator<&'a mut [T]> for MutSplits<'a, T> { if self.finished { return None; } let pred = &mut self.pred; - match self.v.iter().position(|x| (*pred)(x)) { + match self.v.iter().position(ref |x| (*pred)(x)) { None => { self.finished = true; let tmp = mem::replace(&mut self.v, &mut []); @@ -1237,7 +1237,7 @@ impl<'a, T> DoubleEndedIterator<&'a mut [T]> for MutSplits<'a, T> { if self.finished { return None; } let pred = &mut self.pred; - match self.v.iter().rposition(|x| (*pred)(x)) { + match self.v.iter().rposition(ref |x| (*pred)(x)) { None => { self.finished = true; let tmp = mem::replace(&mut self.v, &mut []); diff --git a/src/libcore/str.rs b/src/libcore/str.rs index 800e2dcc27893..556b9e3b95970 100644 --- a/src/libcore/str.rs +++ b/src/libcore/str.rs @@ -645,7 +645,7 @@ impl<'a> Iterator for Utf16CodeUnits<'a> { } let mut buf = [0u16, ..2]; - self.chars.next().map(|ch| { + self.chars.next().map(ref |ch| { let n = ch.encode_utf16(buf.as_mut_slice()).unwrap_or(0); if n == 2 { self.extra = buf[1]; } buf[0] @@ -1817,11 +1817,11 @@ impl<'a> StrSlice<'a> for &'a str { #[inline] fn trim_chars(&self, mut to_trim: C) -> &'a str { - let cur = match self.find(|c: char| !to_trim.matches(c)) { + let cur = match self.find(ref |c: char| !to_trim.matches(c)) { None => "", Some(i) => unsafe { raw::slice_bytes(*self, i, self.len()) } }; - match cur.rfind(|c: char| !to_trim.matches(c)) { + match cur.rfind(ref |c: char| !to_trim.matches(c)) { None => "", Some(i) => { let right = cur.char_range_at(i).next; @@ -1832,7 +1832,7 @@ impl<'a> StrSlice<'a> for &'a str { #[inline] fn trim_left_chars(&self, mut to_trim: C) -> &'a str { - match self.find(|c: char| !to_trim.matches(c)) { + match self.find(ref |c: char| !to_trim.matches(c)) { None => "", Some(first) => unsafe { raw::slice_bytes(*self, first, self.len()) } } @@ -1840,7 +1840,7 @@ impl<'a> StrSlice<'a> for &'a str { #[inline] fn trim_right_chars(&self, mut to_trim: C) -> &'a str { - match self.rfind(|c: char| !to_trim.matches(c)) { + match self.rfind(ref |c: char| !to_trim.matches(c)) { None => "", Some(last) => { let next = self.char_range_at(last).next; diff --git a/src/libcoretest/any.rs b/src/libcoretest/any.rs index fae4a26cd3863..ea12da7580eb5 100644 --- a/src/libcoretest/any.rs +++ b/src/libcoretest/any.rs @@ -122,7 +122,7 @@ fn any_fixed_vec() { #[bench] fn bench_as_ref(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let mut x = 0i; let mut y = &mut x as &mut Any; test::black_box(&mut y); diff --git a/src/libcoretest/char.rs b/src/libcoretest/char.rs index 8c3f4706a3cc5..f4515679c4c74 100644 --- a/src/libcoretest/char.rs +++ b/src/libcoretest/char.rs @@ -117,7 +117,7 @@ fn test_is_digit() { fn test_escape_default() { fn string(c: char) -> String { let mut result = String::new(); - escape_default(c, |c| { result.push_char(c); }); + escape_default(c, ref |c| { result.push_char(c); }); return result; } let s = string('\n'); @@ -152,7 +152,7 @@ fn test_escape_default() { fn test_escape_unicode() { fn string(c: char) -> String { let mut result = String::new(); - escape_unicode(c, |c| { result.push_char(c); }); + escape_unicode(c, ref |c| { result.push_char(c); }); return result; } let s = string('\x00'); diff --git a/src/libcoretest/fmt/num.rs b/src/libcoretest/fmt/num.rs index baef7e3a11e85..4e957fd039457 100644 --- a/src/libcoretest/fmt/num.rs +++ b/src/libcoretest/fmt/num.rs @@ -169,31 +169,31 @@ mod uint { #[bench] fn format_bin(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{:t}", rng.gen::()); }) + b.iter(ref || { format!("{:t}", rng.gen::()); }) } #[bench] fn format_oct(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{:o}", rng.gen::()); }) + b.iter(ref || { format!("{:o}", rng.gen::()); }) } #[bench] fn format_dec(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{:u}", rng.gen::()); }) + b.iter(ref || { format!("{:u}", rng.gen::()); }) } #[bench] fn format_hex(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{:x}", rng.gen::()); }) + b.iter(ref || { format!("{:x}", rng.gen::()); }) } #[bench] fn format_base_36(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{}", radix(rng.gen::(), 36)); }) + b.iter(ref || { format!("{}", radix(rng.gen::(), 36)); }) } } @@ -205,30 +205,30 @@ mod int { #[bench] fn format_bin(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{:t}", rng.gen::()); }) + b.iter(ref || { format!("{:t}", rng.gen::()); }) } #[bench] fn format_oct(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{:o}", rng.gen::()); }) + b.iter(ref || { format!("{:o}", rng.gen::()); }) } #[bench] fn format_dec(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{:d}", rng.gen::()); }) + b.iter(ref || { format!("{:d}", rng.gen::()); }) } #[bench] fn format_hex(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{:x}", rng.gen::()); }) + b.iter(ref || { format!("{:x}", rng.gen::()); }) } #[bench] fn format_base_36(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { format!("{}", radix(rng.gen::(), 36)); }) + b.iter(ref || { format!("{}", radix(rng.gen::(), 36)); }) } } diff --git a/src/libcoretest/iter.rs b/src/libcoretest/iter.rs index d25ffb5b84c8a..6843d542d04bc 100644 --- a/src/libcoretest/iter.rs +++ b/src/libcoretest/iter.rs @@ -224,7 +224,7 @@ fn test_inspect() { let ys = xs.iter() .map(|&x| x) - .inspect(|_| n += 1) + .inspect(ref |_| n += 1) .collect::>(); assert_eq!(n, xs.len()); @@ -849,14 +849,14 @@ fn test_iterate() { #[bench] fn bench_rposition(b: &mut Bencher) { let it: Vec = range(0u, 300).collect(); - b.iter(|| { + b.iter(ref || { it.iter().rposition(|&x| x <= 150); }); } #[bench] fn bench_skip_while(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let it = range(0u, 100); let mut sum = 0; it.skip_while(|&x| { sum += x; sum < 4000 }).all(|_| true); @@ -866,7 +866,7 @@ fn bench_skip_while(b: &mut Bencher) { #[bench] fn bench_multiple_take(b: &mut Bencher) { let mut it = range(0u, 42).cycle(); - b.iter(|| { + b.iter(ref || { let n = it.next().unwrap(); for m in range(0u, n) { it.take(it.next().unwrap()).all(|_| true); diff --git a/src/libcoretest/mem.rs b/src/libcoretest/mem.rs index fde640158f51e..52cc1e3bc5033 100644 --- a/src/libcoretest/mem.rs +++ b/src/libcoretest/mem.rs @@ -135,7 +135,7 @@ impl Trait for Struct { fn trait_vtable_method_call(b: &mut Bencher) { let s = Struct { field: 10 }; let t = &s as &Trait; - b.iter(|| { + b.iter(ref || { t.method() }); } @@ -143,7 +143,7 @@ fn trait_vtable_method_call(b: &mut Bencher) { #[bench] fn trait_static_method_call(b: &mut Bencher) { let s = Struct { field: 10 }; - b.iter(|| { + b.iter(ref || { s.method() }); } @@ -153,7 +153,7 @@ fn trait_static_method_call(b: &mut Bencher) { #[bench] fn match_option_some(b: &mut Bencher) { let x = Some(10i); - b.iter(|| { + b.iter(ref || { match x { Some(y) => y, None => 11 @@ -164,7 +164,7 @@ fn match_option_some(b: &mut Bencher) { #[bench] fn match_vec_pattern(b: &mut Bencher) { let x = [1i,2,3,4,5,6]; - b.iter(|| { + b.iter(ref || { match x { [1,2,3,..] => 10i, _ => 11i, diff --git a/src/libcoretest/ops.rs b/src/libcoretest/ops.rs index 447fd1c699d3d..67d7d9160b184 100644 --- a/src/libcoretest/ops.rs +++ b/src/libcoretest/ops.rs @@ -23,7 +23,7 @@ impl Drop for HasDtor { #[bench] fn alloc_obj_with_dtor(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { HasDtor { _x : 10 }; }) } diff --git a/src/libcoretest/option.rs b/src/libcoretest/option.rs index 776637f3be97d..d3b681ca07f72 100644 --- a/src/libcoretest/option.rs +++ b/src/libcoretest/option.rs @@ -133,7 +133,7 @@ fn test_or_else() { #[test] fn test_option_while_some() { let mut i = 0i; - Some(10i).while_some(|j| { + Some(10i).while_some(ref |j| { i += 1; if j > 0 { Some(j-1) diff --git a/src/libcoretest/ptr.rs b/src/libcoretest/ptr.rs index 9058ae56c45e4..a283c12da3180 100644 --- a/src/libcoretest/ptr.rs +++ b/src/libcoretest/ptr.rs @@ -185,7 +185,7 @@ fn test_ptr_array_each_with_len() { let mut ctr = 0; let mut iteration_count = 0; - array_each_with_len(arr.as_ptr(), arr.len(), |e| { + array_each_with_len(arr.as_ptr(), arr.len(), ref |e| { let actual = CString::new(e, false); assert_eq!(actual.as_str(), expected_arr[ctr].as_str()); ctr += 1; @@ -215,7 +215,7 @@ fn test_ptr_array_each() { let arr_ptr = arr.as_ptr(); let mut ctr = 0u; let mut iteration_count = 0u; - array_each(arr_ptr, |e| { + array_each(arr_ptr, ref |e| { let actual = CString::new(e, false); assert_eq!(actual.as_str(), expected_arr[ctr].as_str()); ctr += 1; diff --git a/src/libdebug/repr.rs b/src/libdebug/repr.rs index b85097e6623dc..0742c242f3f0f 100644 --- a/src/libdebug/repr.rs +++ b/src/libdebug/repr.rs @@ -229,7 +229,7 @@ impl<'a> ReprVisitor<'a> { } '\x20'..'\x7e' => self.writer.write([ch as u8]), _ => { - char::escape_unicode(ch, |c| { + char::escape_unicode(ch, ref |c| { let _ = self.writer.write([c as u8]); }); Ok(()) diff --git a/src/libgetopts/lib.rs b/src/libgetopts/lib.rs index 3286c329755a6..0a8490c09559b 100644 --- a/src/libgetopts/lib.rs +++ b/src/libgetopts/lib.rs @@ -381,15 +381,18 @@ fn is_arg(arg: &str) -> bool { fn find_opt(opts: &[Opt], nm: Name) -> Option { // Search main options. - let pos = opts.iter().position(|opt| opt.name == nm); + let pos = opts.iter().position(ref |opt| opt.name == nm); if pos.is_some() { return pos } // Search in aliases. for candidate in opts.iter() { - if candidate.aliases.iter().position(|opt| opt.name == nm).is_some() { - return opts.iter().position(|opt| opt.name == candidate.name); + if candidate.aliases + .iter() + .position(ref |opt| opt.name == nm) + .is_some() { + return opts.iter().position(ref |opt| opt.name == candidate.name); } } @@ -742,7 +745,7 @@ pub fn usage(brief: &str, opts: &[OptGroup]) -> String { let mut desc_rows = Vec::new(); each_split_within(desc_normalized_whitespace.as_slice(), 54, - |substr| { + ref |substr| { desc_rows.push(substr.to_string()); true }); @@ -850,7 +853,7 @@ fn each_split_within<'a>(ss: &'a str, lim: uint, it: |&'a str| -> bool) lim = fake_i; } - let machine: |&mut bool, (uint, char)| -> bool = |cont, (i, c)| { + let machine: |&mut bool, (uint, char)| -> bool = ref |cont, (i, c)| { let whitespace = if ::std::char::is_whitespace(c) { Ws } else { Cr }; let limit = if (i - slice_start + 1) <= lim { UnderLim } else { OverLim }; @@ -900,7 +903,7 @@ fn each_split_within<'a>(ss: &'a str, lim: uint, it: |&'a str| -> bool) *cont }; - ss.char_indices().all(|x| machine(&mut cont, x)); + ss.char_indices().all(ref |x| machine(&mut cont, x)); // Let the automaton 'run out' by supplying trailing whitespace while cont && match state { B | C => true, A => false } { @@ -914,8 +917,8 @@ fn each_split_within<'a>(ss: &'a str, lim: uint, it: |&'a str| -> bool) fn test_split_within() { fn t(s: &str, i: uint, u: &[String]) { let mut v = Vec::new(); - each_split_within(s, i, |s| { v.push(s.to_string()); true }); - assert!(v.iter().zip(u.iter()).all(|(a,b)| a == b)); + each_split_within(s, i, ref |s| { v.push(s.to_string()); true }); + assert!(v.iter().zip(u.iter()).all(ref |(a,b)| a == b)); } t("", 0, []); t("", 15, []); diff --git a/src/libglob/lib.rs b/src/libglob/lib.rs index d539283f0a717..8ed7bf5798a5d 100644 --- a/src/libglob/lib.rs +++ b/src/libglob/lib.rs @@ -116,10 +116,10 @@ pub fn glob_with(pattern: &str, options: MatchOptions) -> Paths { root.push(pat_root.get_ref()); } - let root_len = pat_root.map_or(0u, |p| p.as_vec().len()); + let root_len = pat_root.map_or(0u, ref |p| p.as_vec().len()); let dir_patterns = pattern.slice_from(cmp::min(root_len, pattern.len())) .split_terminator(is_sep) - .map(|s| Pattern::new(s)) + .map(ref |s| Pattern::new(s)) .collect::>(); let require_dir = pattern.chars().next_back().map(is_sep) == Some(true); @@ -185,7 +185,7 @@ impl Iterator for Paths { fn list_dir_sorted(path: &Path) -> Option> { match fs::readdir(path) { Ok(mut children) => { - children.sort_by(|p1, p2| p2.filename().cmp(&p1.filename())); + children.sort_by(ref |p1, p2| p2.filename().cmp(&p1.filename())); Some(children.move_iter().collect()) } Err(..) => None @@ -349,7 +349,7 @@ impl Pattern { */ pub fn matches_path(&self, path: &Path) -> bool { // FIXME (#9639): This needs to handle non-utf8 paths - path.as_str().map_or(false, |s| { + path.as_str().map_or(false, ref |s| { self.matches(s) }) } @@ -367,7 +367,7 @@ impl Pattern { */ pub fn matches_path_with(&self, path: &Path, options: MatchOptions) -> bool { // FIXME (#9639): This needs to handle non-utf8 paths - path.as_str().map_or(false, |s| { + path.as_str().map_or(false, ref |s| { self.matches_with(s, options) }) } @@ -380,7 +380,7 @@ impl Pattern { let prev_char = Cell::new(prev_char); - let require_literal = |c| { + let require_literal = ref |c| { (options.require_literal_separator && is_sep(c)) || (options.require_literal_leading_dot && c == '.' && is_sep(prev_char.get().unwrap_or('/'))) @@ -472,7 +472,7 @@ fn fill_todo(todo: &mut Vec<(Path, uint)>, patterns: &[Pattern], idx: uint, path return Some(s); } - let add = |todo: &mut Vec<_>, next_path: Path| { + let add = ref |todo: &mut Vec<_>, next_path: Path| { if idx + 1 == patterns.len() { // We know it's good, so don't make the iterator match this path // against the pattern again. In particular, it can't match @@ -501,7 +501,7 @@ fn fill_todo(todo: &mut Vec<(Path, uint)>, patterns: &[Pattern], idx: uint, path None => { match list_dir_sorted(path) { Some(entries) => { - todo.extend(entries.move_iter().map(|x|(x, idx))); + todo.extend(entries.move_iter().map(ref |x|(x, idx))); // Matching the special directory entries . and .. that refer to // the current and parent directory respectively requires that @@ -849,31 +849,31 @@ mod test { require_literal_leading_dot: false }; - let f = |options| Pattern::new("*.txt").matches_with(".hello.txt", options); + let f = ref |options| Pattern::new("*.txt").matches_with(".hello.txt", options); assert!(f(options_not_require_literal_leading_dot)); assert!(!f(options_require_literal_leading_dot)); - let f = |options| Pattern::new(".*.*").matches_with(".hello.txt", options); + let f = ref |options| Pattern::new(".*.*").matches_with(".hello.txt", options); assert!(f(options_not_require_literal_leading_dot)); assert!(f(options_require_literal_leading_dot)); - let f = |options| Pattern::new("aaa/bbb/*").matches_with("aaa/bbb/.ccc", options); + let f = ref |options| Pattern::new("aaa/bbb/*").matches_with("aaa/bbb/.ccc", options); assert!(f(options_not_require_literal_leading_dot)); assert!(!f(options_require_literal_leading_dot)); - let f = |options| Pattern::new("aaa/bbb/*").matches_with("aaa/bbb/c.c.c.", options); + let f = ref |options| Pattern::new("aaa/bbb/*").matches_with("aaa/bbb/c.c.c.", options); assert!(f(options_not_require_literal_leading_dot)); assert!(f(options_require_literal_leading_dot)); - let f = |options| Pattern::new("aaa/bbb/.*").matches_with("aaa/bbb/.ccc", options); + let f = ref |options| Pattern::new("aaa/bbb/.*").matches_with("aaa/bbb/.ccc", options); assert!(f(options_not_require_literal_leading_dot)); assert!(f(options_require_literal_leading_dot)); - let f = |options| Pattern::new("aaa/?bbb").matches_with("aaa/.bbb", options); + let f = ref |options| Pattern::new("aaa/?bbb").matches_with("aaa/.bbb", options); assert!(f(options_not_require_literal_leading_dot)); assert!(!f(options_require_literal_leading_dot)); - let f = |options| Pattern::new("aaa/[.]bbb").matches_with("aaa/.bbb", options); + let f = ref |options| Pattern::new("aaa/[.]bbb").matches_with("aaa/.bbb", options); assert!(f(options_not_require_literal_leading_dot)); assert!(!f(options_require_literal_leading_dot)); } diff --git a/src/libgraphviz/lib.rs b/src/libgraphviz/lib.rs index 7cac0d25abfee..0044643e58289 100644 --- a/src/libgraphviz/lib.rs +++ b/src/libgraphviz/lib.rs @@ -426,7 +426,7 @@ impl<'a> LabelText<'a> { fn escape_str(s: &str) -> String { let mut out = String::with_capacity(s.len()); for c in s.chars() { - LabelText::escape_char(c, |c| out.push_char(c)); + LabelText::escape_char(c, ref |c| out.push_char(c)); } out } diff --git a/src/libgreen/lib.rs b/src/libgreen/lib.rs index 5c280a31db792..2d0580b6299e7 100644 --- a/src/libgreen/lib.rs +++ b/src/libgreen/lib.rs @@ -304,7 +304,7 @@ pub fn start(argc: int, argv: *const *const u8, rt::init(argc, argv); let mut main = Some(main); let mut ret = None; - simple::task().run(|| { + simple::task().run(ref || { ret = Some(run(event_loop_factory, main.take_unwrap())); }).destroy(); // unsafe is ok b/c we're sure that the runtime is gone diff --git a/src/libgreen/task.rs b/src/libgreen/task.rs index 73fe8f6a93f82..75439f34bb921 100644 --- a/src/libgreen/task.rs +++ b/src/libgreen/task.rs @@ -110,7 +110,7 @@ extern fn bootstrap_green_task(task: uint, code: *mut (), env: *mut ()) -> ! { // requested. This is the "try/catch" block for this green task and // is the wrapper for *all* code run in the task. let mut start = Some(start); - let task = task.swap().run(|| start.take_unwrap()()).destroy(); + let task = task.swap().run(ref || start.take_unwrap()()).destroy(); // Once the function has exited, it's time to run the termination // routine. This means we need to context switch one more time but diff --git a/src/libnative/io/file_unix.rs b/src/libnative/io/file_unix.rs index ddcff2be5f340..2b1a20215e390 100644 --- a/src/libnative/io/file_unix.rs +++ b/src/libnative/io/file_unix.rs @@ -154,7 +154,7 @@ impl rtio::RtioFileStream for FileDesc { fn fstat(&mut self) -> IoResult { let mut stat: libc::stat = unsafe { mem::zeroed() }; - match retry(|| unsafe { libc::fstat(self.fd(), &mut stat) }) { + match retry(ref || unsafe { libc::fstat(self.fd(), &mut stat) }) { 0 => Ok(mkstat(&stat)), _ => Err(super::last_error()), } @@ -428,7 +428,7 @@ pub fn readlink(p: &CString) -> IoResult { len = 1024; // FIXME: read PATH_MAX from C ffi? } let mut buf: Vec = Vec::with_capacity(len as uint); - match retry(|| unsafe { + match retry(ref || unsafe { libc::readlink(p, buf.as_ptr() as *mut libc::c_char, len as libc::size_t) as libc::c_int }) { @@ -442,13 +442,13 @@ pub fn readlink(p: &CString) -> IoResult { } pub fn symlink(src: &CString, dst: &CString) -> IoResult<()> { - super::mkerr_libc(retry(|| unsafe { + super::mkerr_libc(retry(ref || unsafe { libc::symlink(src.as_ptr(), dst.as_ptr()) })) } pub fn link(src: &CString, dst: &CString) -> IoResult<()> { - super::mkerr_libc(retry(|| unsafe { + super::mkerr_libc(retry(ref || unsafe { libc::link(src.as_ptr(), dst.as_ptr()) })) } @@ -489,7 +489,7 @@ fn mkstat(stat: &libc::stat) -> rtio::FileStat { pub fn stat(p: &CString) -> IoResult { let mut stat: libc::stat = unsafe { mem::zeroed() }; - match retry(|| unsafe { libc::stat(p.as_ptr(), &mut stat) }) { + match retry(ref || unsafe { libc::stat(p.as_ptr(), &mut stat) }) { 0 => Ok(mkstat(&stat)), _ => Err(super::last_error()), } @@ -497,7 +497,7 @@ pub fn stat(p: &CString) -> IoResult { pub fn lstat(p: &CString) -> IoResult { let mut stat: libc::stat = unsafe { mem::zeroed() }; - match retry(|| unsafe { libc::lstat(p.as_ptr(), &mut stat) }) { + match retry(ref || unsafe { libc::lstat(p.as_ptr(), &mut stat) }) { 0 => Ok(mkstat(&stat)), _ => Err(super::last_error()), } @@ -508,7 +508,7 @@ pub fn utime(p: &CString, atime: u64, mtime: u64) -> IoResult<()> { actime: (atime / 1000) as libc::time_t, modtime: (mtime / 1000) as libc::time_t, }; - super::mkerr_libc(retry(|| unsafe { + super::mkerr_libc(retry(ref || unsafe { libc::utime(p.as_ptr(), &buf) })) } diff --git a/src/libnative/io/mod.rs b/src/libnative/io/mod.rs index 5d66100732918..c1c0eb7fa9837 100644 --- a/src/libnative/io/mod.rs +++ b/src/libnative/io/mod.rs @@ -143,7 +143,7 @@ fn keep_going(data: &[u8], f: |*const u8, uint| -> i64) -> i64 { let mut data = data.as_ptr(); let mut amt = origamt; while amt > 0 { - let ret = retry(|| f(data, amt) as libc::c_int); + let ret = retry(ref || f(data, amt) as libc::c_int); if ret == 0 { break } else if ret != -1 { diff --git a/src/libnative/io/net.rs b/src/libnative/io/net.rs index 2255578ba8038..da7704ae407a9 100644 --- a/src/libnative/io/net.rs +++ b/src/libnative/io/net.rs @@ -358,8 +358,8 @@ impl TcpStream { impl rtio::RtioTcpStream for TcpStream { fn read(&mut self, buf: &mut [u8]) -> IoResult { let fd = self.fd(); - let dolock = || self.lock_nonblocking(); - let doread = |nb| unsafe { + let dolock = ref || self.lock_nonblocking(); + let doread = ref |nb| unsafe { let flags = if nb {c::MSG_DONTWAIT} else {0}; libc::recv(fd, buf.as_mut_ptr() as *mut libc::c_void, @@ -371,8 +371,8 @@ impl rtio::RtioTcpStream for TcpStream { fn write(&mut self, buf: &[u8]) -> IoResult<()> { let fd = self.fd(); - let dolock = || self.lock_nonblocking(); - let dowrite = |nb: bool, buf: *const u8, len: uint| unsafe { + let dolock = ref || self.lock_nonblocking(); + let dowrite = ref |nb: bool, buf: *const u8, len: uint| unsafe { let flags = if nb {c::MSG_DONTWAIT} else {0}; libc::send(fd, buf as *mut libc::c_void, @@ -518,7 +518,7 @@ impl TcpAcceptor { let storagep = &mut storage as *mut libc::sockaddr_storage; let size = mem::size_of::(); let mut size = size as libc::socklen_t; - match retry(|| { + match retry(ref || { libc::accept(self.fd(), storagep as *mut libc::sockaddr, &mut size as *mut libc::socklen_t) as libc::c_int @@ -641,8 +641,8 @@ impl rtio::RtioUdpSocket for UdpSocket { let mut addrlen: libc::socklen_t = mem::size_of::() as libc::socklen_t; - let dolock = || self.lock_nonblocking(); - let n = try!(read(fd, self.read_deadline, dolock, |nb| unsafe { + let dolock = ref || self.lock_nonblocking(); + let n = try!(read(fd, self.read_deadline, dolock, ref |nb| unsafe { let flags = if nb {c::MSG_DONTWAIT} else {0}; libc::recvfrom(fd, buf.as_mut_ptr() as *mut libc::c_void, @@ -651,7 +651,7 @@ impl rtio::RtioUdpSocket for UdpSocket { storagep, &mut addrlen) as libc::c_int })); - sockaddr_to_addr(&storage, addrlen as uint).and_then(|addr| { + sockaddr_to_addr(&storage, addrlen as uint).and_then(ref |addr| { Ok((n as uint, addr)) }) } @@ -662,8 +662,8 @@ impl rtio::RtioUdpSocket for UdpSocket { let dstp = &storage as *const _ as *const libc::sockaddr; let fd = self.fd(); - let dolock = || self.lock_nonblocking(); - let dowrite = |nb, buf: *const u8, len: uint| unsafe { + let dolock = ref || self.lock_nonblocking(); + let dowrite = ref |nb, buf: *const u8, len: uint| unsafe { let flags = if nb {c::MSG_DONTWAIT} else {0}; libc::sendto(fd, buf as *const libc::c_void, @@ -805,7 +805,7 @@ pub fn read(fd: sock_t, read: |bool| -> libc::c_int) -> IoResult { let mut ret = -1; if deadline == 0 { - ret = retry(|| read(false)); + ret = retry(ref || read(false)); } if deadline != 0 || (ret == -1 && util::wouldblock()) { @@ -826,7 +826,7 @@ pub fn read(fd: sock_t, // fail to read some data, we retry (hence the outer loop) and // wait for the socket to become readable again. let _guard = lock(); - match retry(|| read(deadline.is_some())) { + match retry(ref || read(deadline.is_some())) { -1 if util::wouldblock() => { assert!(deadline.is_some()); } -1 => return Err(last_error()), n => { ret = n; break } @@ -851,12 +851,12 @@ pub fn write(fd: sock_t, let mut written = 0; if deadline == 0 { if write_everything { - ret = keep_going(buf, |inner, len| { + ret = keep_going(buf, ref |inner, len| { written = buf.len() - len; write(false, inner, len) }); } else { - ret = retry(|| { + ret = retry(ref || { write(false, buf.as_ptr(), buf.len()) as libc::c_int }) as i64; if ret > 0 { written = ret as uint; } @@ -885,7 +885,9 @@ pub fn write(fd: sock_t, let _guard = lock(); let ptr = buf.slice_from(written).as_ptr(); let len = buf.len() - written; - match retry(|| write(deadline.is_some(), ptr, len) as libc::c_int) { + match retry(ref || { + write(deadline.is_some(), ptr, len) as libc::c_int + }) { -1 if util::wouldblock() => {} -1 => return Err(last_error()), n => { written += n as uint; } diff --git a/src/libnative/io/pipe_unix.rs b/src/libnative/io/pipe_unix.rs index 895b8b5929c96..231b59009a195 100644 --- a/src/libnative/io/pipe_unix.rs +++ b/src/libnative/io/pipe_unix.rs @@ -84,7 +84,9 @@ fn connect(addr: &CString, ty: libc::c_int, match timeout { None => { - match retry(|| unsafe { libc::connect(inner.fd, addrp, len) }) { + match retry(ref || unsafe { + libc::connect(inner.fd, addrp, len) + }) { -1 => Err(super::last_error()), _ => Ok(inner) } @@ -154,8 +156,8 @@ impl UnixStream { impl rtio::RtioPipe for UnixStream { fn read(&mut self, buf: &mut [u8]) -> IoResult { let fd = self.fd(); - let dolock = || self.lock_nonblocking(); - let doread = |nb| unsafe { + let dolock = ref || self.lock_nonblocking(); + let doread = ref |nb| unsafe { let flags = if nb {c::MSG_DONTWAIT} else {0}; libc::recv(fd, buf.as_mut_ptr() as *mut libc::c_void, @@ -167,8 +169,8 @@ impl rtio::RtioPipe for UnixStream { fn write(&mut self, buf: &[u8]) -> IoResult<()> { let fd = self.fd(); - let dolock = || self.lock_nonblocking(); - let dowrite = |nb: bool, buf: *const u8, len: uint| unsafe { + let dolock = ref || self.lock_nonblocking(); + let dowrite = ref |nb: bool, buf: *const u8, len: uint| unsafe { let flags = if nb {c::MSG_DONTWAIT} else {0}; libc::send(fd, buf as *mut libc::c_void, @@ -255,7 +257,7 @@ impl UnixAcceptor { let storagep = &mut storage as *mut libc::sockaddr_storage; let size = mem::size_of::(); let mut size = size as libc::socklen_t; - match retry(|| unsafe { + match retry(ref || unsafe { libc::accept(self.fd(), storagep as *mut libc::sockaddr, &mut size as *mut libc::socklen_t) as libc::c_int diff --git a/src/libnative/io/process.rs b/src/libnative/io/process.rs index 443d7645388a3..67dfe4d9d6cd9 100644 --- a/src/libnative/io/process.rs +++ b/src/libnative/io/process.rs @@ -943,7 +943,9 @@ fn waitpid(pid: pid_t, deadline: u64) -> IoResult { let mut status = 0 as c_int; if deadline == 0 { - return match retry(|| unsafe { c::waitpid(pid, &mut status, 0) }) { + return match retry(ref || unsafe { + c::waitpid(pid, &mut status, 0) + }) { -1 => fail!("unknown waitpid error: {}", super::last_error().code), _ => Ok(translate_status(status)), } @@ -1187,7 +1189,7 @@ fn waitpid_nowait(pid: pid_t) -> Option { #[cfg(unix)] fn waitpid_os(pid: pid_t) -> Option { let mut status = 0 as c_int; - match retry(|| unsafe { + match retry(ref || unsafe { c::waitpid(pid, &mut status, c::WNOHANG) }) { n if n == pid => Some(translate_status(status)), diff --git a/src/libnative/io/timer_unix.rs b/src/libnative/io/timer_unix.rs index 06d48f2f886b8..c9b5ee12bb9ce 100644 --- a/src/libnative/io/timer_unix.rs +++ b/src/libnative/io/timer_unix.rs @@ -107,7 +107,7 @@ fn helper(input: libc::c_int, messages: Receiver, _: ()) { // inserts a timer into an array of timers (sorted by firing time) fn insert(t: Box, active: &mut Vec>) { - match active.iter().position(|tm| tm.target > t.target) { + match active.iter().position(ref |tm| tm.target > t.target) { Some(pos) => { active.insert(pos, t); } None => { active.push(t); } } @@ -172,7 +172,8 @@ fn helper(input: libc::c_int, messages: Receiver, _: ()) { Ok(NewTimer(timer)) => insert(timer, &mut active), Ok(RemoveTimer(id, ack)) => { - match dead.iter().position(|&(i, _)| id == i) { + match dead.iter() + .position(ref |&(i, _)| id == i) { Some(i) => { let (_, i) = dead.remove(i).unwrap(); ack.send(i); @@ -180,7 +181,8 @@ fn helper(input: libc::c_int, messages: Receiver, _: ()) { } None => {} } - let i = active.iter().position(|i| i.id == id); + let i = active.iter() + .position(ref |i| i.id == id); let i = i.expect("no timer found"); let t = active.remove(i).unwrap(); ack.send(t); @@ -205,7 +207,7 @@ impl Timer { pub fn new() -> IoResult { // See notes above regarding using int return value // instead of () - unsafe { HELPER.boot(|| {}, helper); } + unsafe { HELPER.boot(ref || {}, helper); } static mut ID: atomic::AtomicUint = atomic::INIT_ATOMIC_UINT; let id = unsafe { ID.fetch_add(1, atomic::Relaxed) }; diff --git a/src/libnative/io/util.rs b/src/libnative/io/util.rs index 356805d91de7a..ab661deef3d33 100644 --- a/src/libnative/io/util.rs +++ b/src/libnative/io/util.rs @@ -176,7 +176,7 @@ pub fn await(fd: net::sock_t, deadline: Option, }; let mut tv: libc::timeval = unsafe { mem::zeroed() }; - match retry(|| { + match retry(ref || { let now = ::io::timer::now(); let tvp = match deadline { None => ptr::mut_null(), diff --git a/src/libnative/lib.rs b/src/libnative/lib.rs index c7b89b6cb9153..a1d43ca9015db 100644 --- a/src/libnative/lib.rs +++ b/src/libnative/lib.rs @@ -135,7 +135,7 @@ pub fn start(argc: int, argv: *const *const u8, main: proc()) -> int { let mut main = Some(main); let mut task = task::new((my_stack_bottom, my_stack_top)); task.name = Some(str::Slice("
")); - drop(task.run(|| { + drop(task.run(ref || { unsafe { rt::stack::record_os_managed_stack_bounds(my_stack_bottom, my_stack_top); } diff --git a/src/libnative/task.rs b/src/libnative/task.rs index 55806caaf1352..69da70f4e7296 100644 --- a/src/libnative/task.rs +++ b/src/libnative/task.rs @@ -92,7 +92,7 @@ pub fn spawn_opts(opts: TaskOpts, f: proc():Send) { let mut f = Some(f); let mut task = task; task.put_runtime(ops); - drop(task.run(|| { f.take_unwrap()() }).destroy()); + drop(task.run(ref || { f.take_unwrap()() }).destroy()); drop(token); }) } diff --git a/src/libnum/bigint.rs b/src/libnum/bigint.rs index 48fc9fb4a38c6..72350cba783de 100644 --- a/src/libnum/bigint.rs +++ b/src/libnum/bigint.rs @@ -248,7 +248,12 @@ impl Add for BigUint { let (a, b) = if self.data.len() > other.data.len() { (self, other) } else { (other, self) }; let mut carry = 0; - let mut sum: Vec = a.data.iter().zip(b.data.iter().chain(zeros)).map(|(ai, bi)| { + let mut sum: Vec = a.data + .iter() + .zip(b.data + .iter() + .chain(zeros)) + .map(ref |(ai, bi)| { let (hi, lo) = BigDigit::from_doublebigdigit( (*ai as DoubleBigDigit) + (*bi as DoubleBigDigit) + (carry as DoubleBigDigit)); carry = hi; @@ -266,7 +271,7 @@ impl Sub for BigUint { let (a, b) = (self.data.iter().chain(zeros.clone()), other.data.iter().chain(zeros)); let mut borrow = 0i; - let diff: Vec = a.take(new_len).zip(b).map(|(ai, bi)| { + let diff: Vec = a.take(new_len).zip(b).map(ref |(ai, bi)| { let (hi, lo) = BigDigit::from_doublebigdigit( BigDigit::base + (*ai as DoubleBigDigit) @@ -324,7 +329,7 @@ impl Mul for BigUint { if n == 1 { return (*a).clone(); } let mut carry = 0; - let mut prod: Vec = a.data.iter().map(|ai| { + let mut prod: Vec = a.data.iter().map(ref |ai| { let (hi, lo) = BigDigit::from_doublebigdigit( (*ai as DoubleBigDigit) * (n as DoubleBigDigit) + (carry as DoubleBigDigit) ); @@ -768,7 +773,7 @@ impl BigUint { if n_bits == 0 || self.is_zero() { return (*self).clone(); } let mut carry = 0; - let mut shifted: Vec = self.data.iter().map(|elem| { + let mut shifted: Vec = self.data.iter().map(ref |elem| { let (hi, lo) = BigDigit::from_doublebigdigit( (*elem as DoubleBigDigit) << n_bits | (carry as DoubleBigDigit) ); @@ -2918,14 +2923,14 @@ mod bench { #[bench] fn factorial_100(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { factorial(100); }); } #[bench] fn fib_100(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { fib(100); }); } @@ -2934,10 +2939,10 @@ mod bench { fn to_string(b: &mut Bencher) { let fac = factorial(100); let fib = fib(100); - b.iter(|| { + b.iter(ref || { fac.to_string(); }); - b.iter(|| { + b.iter(ref || { fib.to_string(); }); } @@ -2945,7 +2950,7 @@ mod bench { #[bench] fn shr(b: &mut Bencher) { let n = { let one : BigUint = One::one(); one << 1000 }; - b.iter(|| { + b.iter(ref || { let mut m = n.clone(); for _ in range(0u, 10) { m = m >> 1; diff --git a/src/librand/distributions/exponential.rs b/src/librand/distributions/exponential.rs index 7d1a4409718fa..418098ee83378 100644 --- a/src/librand/distributions/exponential.rs +++ b/src/librand/distributions/exponential.rs @@ -134,7 +134,7 @@ mod bench { let mut rng = ::test::weak_rng(); let mut exp = Exp::new(2.71828 * 3.14159); - b.iter(|| { + b.iter(ref || { for _ in range(0, ::RAND_BENCH_N) { exp.sample(&mut rng); } diff --git a/src/librand/distributions/gamma.rs b/src/librand/distributions/gamma.rs index 7b6e94eaa9209..6f15b06ad833e 100644 --- a/src/librand/distributions/gamma.rs +++ b/src/librand/distributions/gamma.rs @@ -394,7 +394,7 @@ mod bench { let gamma = Gamma::new(10., 1.0); let mut rng = ::test::weak_rng(); - b.iter(|| { + b.iter(ref || { for _ in range(0, ::RAND_BENCH_N) { gamma.ind_sample(&mut rng); } @@ -407,7 +407,7 @@ mod bench { let gamma = Gamma::new(0.1, 1.0); let mut rng = ::test::weak_rng(); - b.iter(|| { + b.iter(ref || { for _ in range(0, ::RAND_BENCH_N) { gamma.ind_sample(&mut rng); } diff --git a/src/librand/distributions/normal.rs b/src/librand/distributions/normal.rs index 507cafd283590..f6774b5982fbe 100644 --- a/src/librand/distributions/normal.rs +++ b/src/librand/distributions/normal.rs @@ -200,7 +200,7 @@ mod bench { let mut rng = ::test::weak_rng(); let mut normal = Normal::new(-2.71828, 3.14159); - b.iter(|| { + b.iter(ref || { for _ in range(0, ::RAND_BENCH_N) { normal.sample(&mut rng); } diff --git a/src/librbml/io.rs b/src/librbml/io.rs index 9ab163c5f4740..86afb768e1d2e 100644 --- a/src/librbml/io.rs +++ b/src/librbml/io.rs @@ -179,7 +179,7 @@ mod tests { let src: Vec = Vec::from_elem(len, 5); b.bytes = (times * len) as u64; - b.iter(|| { + b.iter(ref || { let mut wr = SeekableMemWriter::new(); for _ in range(0, times) { wr.write(src.as_slice()).unwrap(); diff --git a/src/librbml/lib.rs b/src/librbml/lib.rs index 4927a8293a4da..807b278a6a319 100644 --- a/src/librbml/lib.rs +++ b/src/librbml/lib.rs @@ -585,10 +585,11 @@ pub mod reader { } fn read_option(&mut self, - f: |&mut Decoder<'doc>, bool| -> DecodeResult) -> DecodeResult { + f: |&mut Decoder<'doc>, bool| -> DecodeResult) + -> DecodeResult { debug!("read_option()"); - self.read_enum("Option", |this| { - this.read_enum_variant(["None", "Some"], |this, idx| { + self.read_enum("Option", ref |this| { + this.read_enum_variant(["None", "Some"], ref |this, idx| { match idx { 0 => f(this, false), 1 => f(this, true), @@ -1137,7 +1138,7 @@ mod bench { } }); let mut sum = 0u; - b.iter(|| { + b.iter(ref || { let mut i = 0; while i < data.len() { sum += reader::vuint_at(data.as_slice(), i).unwrap().val; @@ -1155,7 +1156,7 @@ mod bench { } }); let mut sum = 0u; - b.iter(|| { + b.iter(ref || { let mut i = 1; while i < data.len() { sum += reader::vuint_at(data.as_slice(), i).unwrap().val; @@ -1174,7 +1175,7 @@ mod bench { } }); let mut sum = 0u; - b.iter(|| { + b.iter(ref || { let mut i = 0; while i < data.len() { sum += reader::vuint_at(data.as_slice(), i).unwrap().val; @@ -1193,7 +1194,7 @@ mod bench { } }); let mut sum = 0u; - b.iter(|| { + b.iter(ref || { let mut i = 1; while i < data.len() { sum += reader::vuint_at(data.as_slice(), i).unwrap().val; diff --git a/src/libregex/test/bench.rs b/src/libregex/test/bench.rs index 4bd9d1a8666c0..c218b02b935c6 100644 --- a/src/libregex/test/bench.rs +++ b/src/libregex/test/bench.rs @@ -15,7 +15,7 @@ use stdtest::Bencher; use regex::{Regex, NoExpand}; fn bench_assert_match(b: &mut Bencher, re: Regex, text: &str) { - b.iter(|| if !re.is_match(text) { fail!("no match") }); + b.iter(ref || if !re.is_match(text) { fail!("no match") }); } #[bench] @@ -64,77 +64,77 @@ fn replace_all(b: &mut Bencher) { // FIXME: This isn't using the $name expand stuff. // It's possible RE2/Go is using it, but currently, the expand in this // crate is actually compiling a regex, so it's incredibly slow. - b.iter(|| re.replace_all(text, NoExpand(""))); + b.iter(ref || re.replace_all(text, NoExpand(""))); } #[bench] fn anchored_literal_short_non_match(b: &mut Bencher) { let re = regex!("^zbc(d|e)"); let text = "abcdefghijklmnopqrstuvwxyz"; - b.iter(|| re.is_match(text)); + b.iter(ref || re.is_match(text)); } #[bench] fn anchored_literal_long_non_match(b: &mut Bencher) { let re = regex!("^zbc(d|e)"); let text = "abcdefghijklmnopqrstuvwxyz".repeat(15); - b.iter(|| re.is_match(text.as_slice())); + b.iter(ref || re.is_match(text.as_slice())); } #[bench] fn anchored_literal_short_match(b: &mut Bencher) { let re = regex!("^.bc(d|e)"); let text = "abcdefghijklmnopqrstuvwxyz"; - b.iter(|| re.is_match(text)); + b.iter(ref || re.is_match(text)); } #[bench] fn anchored_literal_long_match(b: &mut Bencher) { let re = regex!("^.bc(d|e)"); let text = "abcdefghijklmnopqrstuvwxyz".repeat(15); - b.iter(|| re.is_match(text.as_slice())); + b.iter(ref || re.is_match(text.as_slice())); } #[bench] fn one_pass_short_a(b: &mut Bencher) { let re = regex!("^.bc(d|e)*$"); let text = "abcddddddeeeededd"; - b.iter(|| re.is_match(text)); + b.iter(ref || re.is_match(text)); } #[bench] fn one_pass_short_a_not(b: &mut Bencher) { let re = regex!(".bc(d|e)*$"); let text = "abcddddddeeeededd"; - b.iter(|| re.is_match(text)); + b.iter(ref || re.is_match(text)); } #[bench] fn one_pass_short_b(b: &mut Bencher) { let re = regex!("^.bc(?:d|e)*$"); let text = "abcddddddeeeededd"; - b.iter(|| re.is_match(text)); + b.iter(ref || re.is_match(text)); } #[bench] fn one_pass_short_b_not(b: &mut Bencher) { let re = regex!(".bc(?:d|e)*$"); let text = "abcddddddeeeededd"; - b.iter(|| re.is_match(text)); + b.iter(ref || re.is_match(text)); } #[bench] fn one_pass_long_prefix(b: &mut Bencher) { let re = regex!("^abcdefghijklmnopqrstuvwxyz.*$"); let text = "abcdefghijklmnopqrstuvwxyz"; - b.iter(|| re.is_match(text)); + b.iter(ref || re.is_match(text)); } #[bench] fn one_pass_long_prefix_not(b: &mut Bencher) { let re = regex!("^.bcdefghijklmnopqrstuvwxyz.*$"); let text = "abcdefghijklmnopqrstuvwxyz"; - b.iter(|| re.is_match(text)); + b.iter(ref || re.is_match(text)); } macro_rules! throughput( @@ -143,7 +143,11 @@ macro_rules! throughput( fn $name(b: &mut Bencher) { let text = gen_text($size); b.bytes = $size; - b.iter(|| if $regex.is_match(text.as_slice()) { fail!("match") }); + b.iter(ref || { + if $regex.is_match(text.as_slice()) { + fail!("match") + } + }); } ); ) diff --git a/src/libregex_macros/lib.rs b/src/libregex_macros/lib.rs index 8610621d30ae8..e086669fe72fe 100644 --- a/src/libregex_macros/lib.rs +++ b/src/libregex_macros/lib.rs @@ -117,12 +117,14 @@ impl<'a> NfaGen<'a> { let num_cap_locs = 2 * self.prog.num_captures(); let num_insts = self.prog.insts.len(); let cap_names = self.vec_expr(self.names.as_slice().iter(), - |cx, name| match *name { - Some(ref name) => { - let name = name.as_slice(); - quote_expr!(cx, Some($name)) + ref |cx, name| { + match *name { + Some(ref name) => { + let name = name.as_slice(); + quote_expr!(cx, Some($name)) + } + None => cx.expr_none(self.sp), } - None => cx.expr_none(self.sp), } ); let prefix_anchor = @@ -131,7 +133,7 @@ impl<'a> NfaGen<'a> { _ => false, }; let init_groups = self.vec_expr(range(0, num_cap_locs), - |cx, _| cx.expr_none(self.sp)); + ref |cx, _| cx.expr_none(self.sp)); let prefix_lit = Rc::new(Vec::from_slice(self.prog.prefix.as_slice().as_bytes())); let prefix_bytes = self.cx.expr_lit(self.sp, ast::LitBinary(prefix_lit)); diff --git a/src/librustc/back/link.rs b/src/librustc/back/link.rs index b475edf77800d..81b045de860ee 100644 --- a/src/librustc/back/link.rs +++ b/src/librustc/back/link.rs @@ -456,7 +456,7 @@ pub mod write { let mut llvm_c_strs = Vec::new(); let mut llvm_args = Vec::new(); { - let add = |arg: &str| { + let add = ref |arg: &str| { let s = arg.to_c_str(); llvm_args.push(s.as_ptr()); llvm_c_strs.push(s); @@ -750,7 +750,7 @@ pub fn sanitize(s: &str) -> String { _ => { let mut tstr = String::new(); - char::escape_unicode(c, |c| tstr.push_char(c)); + char::escape_unicode(c, ref |c| tstr.push_char(c)); result.push_char('$'); result.push_str(tstr.as_slice().slice_from(1)); } @@ -1292,7 +1292,10 @@ fn link_natively(sess: &Session, trans: &CrateTranslation, dylib: bool, // Invoke the system linker debug!("{}", &cmd); - let prog = time(sess.time_passes(), "running linker", (), |()| cmd.output()); + let prog = time(sess.time_passes(), + "running linker", + (), + ref |()| cmd.output()); match prog { Ok(prog) => { if !prog.status.success() { @@ -1750,7 +1753,8 @@ fn add_upstream_rust_crates(cmd: &mut Command, sess: &Session, let name = name.slice(3, name.len() - 5); // chop off lib/.rlib time(sess.time_passes(), format!("altering {}.rlib", name).as_slice(), - (), |()| { + (), + ref |()| { let dst = tmpdir.join(cratepath.filename().unwrap()); match fs::copy(&cratepath, &dst) { Ok(..) => {} diff --git a/src/librustc/back/lto.rs b/src/librustc/back/lto.rs index 4212513f56a40..fa92c497de63e 100644 --- a/src/librustc/back/lto.rs +++ b/src/librustc/back/lto.rs @@ -62,13 +62,13 @@ pub fn run(sess: &session::Session, llmod: ModuleRef, let bc_encoded = time(sess.time_passes(), format!("read {}.bytecode.deflate", name).as_slice(), (), - |_| { + ref |_| { archive.read(format!("{}.bytecode.deflate", file).as_slice()) }); let bc_encoded = bc_encoded.expect("missing compressed bytecode in archive!"); let bc_extractor = if is_versioned_bytecode_format(bc_encoded) { - |_| { + ref |_| { // Read the version let version = extract_bytecode_format_version(bc_encoded); @@ -94,7 +94,7 @@ pub fn run(sess: &session::Session, llmod: ModuleRef, } else { // the object must be in the old, pre-versioning format, so simply // inflate everything and let LLVM decide if it can make sense of it - |_| { + ref |_| { match flate::inflate_bytes(bc_encoded) { Some(bc) => bc, None => { @@ -115,7 +115,7 @@ pub fn run(sess: &session::Session, llmod: ModuleRef, time(sess.time_passes(), format!("ll link {}", name).as_slice(), (), - |()| unsafe { + ref |()| unsafe { if !llvm::LLVMRustLinkInExternalBitcode(llmod, ptr as *const libc::c_char, bc_decoded.len() as libc::size_t) { diff --git a/src/librustc/driver/config.rs b/src/librustc/driver/config.rs index c402c256a3719..39d702a5597d7 100644 --- a/src/librustc/driver/config.rs +++ b/src/librustc/driver/config.rs @@ -428,7 +428,7 @@ pub fn default_configuration(sess: &Session) -> ast::CrateConfig { pub fn append_configuration(cfg: &mut ast::CrateConfig, name: InternedString) { - if !cfg.iter().any(|mi| mi.name() == name) { + if !cfg.iter().any(ref |mi| mi.name() == name) { cfg.push(attr::mk_word_item(name)) } } diff --git a/src/librustc/driver/driver.rs b/src/librustc/driver/driver.rs index 261d4be86b406..0321a5e3d7c55 100644 --- a/src/librustc/driver/driver.rs +++ b/src/librustc/driver/driver.rs @@ -203,10 +203,10 @@ pub fn phase_2_configure_and_expand(sess: &Session, *sess.crate_metadata.borrow_mut() = collect_crate_metadata(sess, krate.attrs.as_slice()); - time(time_passes, "gated feature checking", (), |_| + time(time_passes, "gated feature checking", (), ref |_| front::feature_gate::check_crate(sess, &krate)); - krate = time(time_passes, "crate injection", krate, |krate| + krate = time(time_passes, "crate injection", krate, ref |krate| front::std_inject::maybe_inject_crates_ref(sess, krate)); // strip before expansion to allow macros to depend on @@ -217,17 +217,17 @@ pub fn phase_2_configure_and_expand(sess: &Session, // // baz! should not use this definition unless foo is enabled. - krate = time(time_passes, "configuration 1", krate, |krate| + krate = time(time_passes, "configuration 1", krate, ref |krate| front::config::strip_unconfigured_items(krate)); let mut addl_plugins = Some(addl_plugins); let Plugins { macros, registrars } - = time(time_passes, "plugin loading", (), |_| + = time(time_passes, "plugin loading", (), ref |_| plugin::load::load_plugins(sess, &krate, addl_plugins.take_unwrap())); let mut registry = Registry::new(&krate); - time(time_passes, "plugin registration", (), |_| { + time(time_passes, "plugin registration", (), ref |_| { if sess.features.rustc_diagnostic_macros.get() { registry.register_macro("__diagnostic_used", diagnostics::plugin::expand_diagnostic_used); @@ -262,7 +262,7 @@ pub fn phase_2_configure_and_expand(sess: &Session, sess.abort_if_errors(); krate = time(time_passes, "expansion", (krate, macros, syntax_exts), - |(krate, macros, syntax_exts)| { + ref |(krate, macros, syntax_exts)| { // Windows dlls do not have rpaths, so they don't know how to find their // dependencies. It's up to us to tell the system where to find all the // dependent dlls. Note that this uses cfg!(windows) as opposed to @@ -286,17 +286,23 @@ pub fn phase_2_configure_and_expand(sess: &Session, // JBC: make CFG processing part of expansion to avoid this problem: // strip again, in case expansion added anything with a #[cfg]. - krate = time(time_passes, "configuration 2", krate, |krate| + krate = time(time_passes, "configuration 2", krate, ref |krate| front::config::strip_unconfigured_items(krate)); - krate = time(time_passes, "maybe building test harness", krate, |krate| - front::test::modify_for_testing(sess, krate)); + krate = time(time_passes, + "maybe building test harness", + krate, + ref |krate| front::test::modify_for_testing(sess, krate)); - krate = time(time_passes, "prelude injection", krate, |krate| + krate = time(time_passes, "prelude injection", krate, ref |krate| front::std_inject::maybe_inject_prelude(sess, krate)); - let (krate, map) = time(time_passes, "assigning node ids and indexing ast", krate, |krate| - front::assign_node_ids_and_map::assign_node_ids_and_map(sess, krate)); + let (krate, map) = time(time_passes, + "assigning node ids and indexing ast", + krate, + ref |krate| { + front::assign_node_ids_and_map::assign_node_ids_and_map(sess, krate) + }); if sess.opts.debugging_opts & config::AST_JSON != 0 { let mut stdout = io::BufferedWriter::new(io::stdout()); @@ -330,10 +336,10 @@ pub fn phase_3_run_analysis_passes(sess: Session, name: String) -> CrateAnalysis { let time_passes = sess.time_passes(); - time(time_passes, "external crate/lib resolution", (), |_| + time(time_passes, "external crate/lib resolution", (), ref |_| creader::read_crates(&sess, krate)); - let lang_items = time(time_passes, "language item collection", (), |_| + let lang_items = time(time_passes, "language item collection", (), ref |_| middle::lang_items::collect_language_items(krate, &sess)); let middle::resolve::CrateMap { @@ -342,35 +348,36 @@ pub fn phase_3_run_analysis_passes(sess: Session, trait_map: trait_map, external_exports: external_exports, last_private_map: last_private_map - } = - time(time_passes, "resolution", (), |_| + } = time(time_passes, "resolution", (), ref |_| middle::resolve::resolve_crate(&sess, &lang_items, krate)); // Discard MTWT tables that aren't required past resolution. syntax::ext::mtwt::clear_tables(); let named_region_map = time(time_passes, "lifetime resolution", (), - |_| middle::resolve_lifetime::krate(&sess, krate)); + ref |_| { + middle::resolve_lifetime::krate(&sess, krate) + }); time(time_passes, "looking for entry point", (), - |_| middle::entry::find_entry_point(&sess, krate, &ast_map)); + ref |_| middle::entry::find_entry_point(&sess, krate, &ast_map)); sess.plugin_registrar_fn.set( - time(time_passes, "looking for plugin registrar", (), |_| + time(time_passes, "looking for plugin registrar", (), ref |_| plugin::build::find_plugin_registrar( sess.diagnostic(), krate))); let (freevars, capture_modes) = - time(time_passes, "freevar finding", (), |_| + time(time_passes, "freevar finding", (), ref |_| freevars::annotate_freevars(&def_map, krate)); - let region_map = time(time_passes, "region resolution", (), |_| + let region_map = time(time_passes, "region resolution", (), ref |_| middle::region::resolve_crate(&sess, krate)); - time(time_passes, "loop checking", (), |_| + time(time_passes, "loop checking", (), ref |_| middle::check_loop::check_crate(&sess, krate)); - let stability_index = time(time_passes, "stability index", (), |_| + let stability_index = time(time_passes, "stability index", (), ref |_| stability::Index::build(krate)); let ty_cx = ty::mk_ctxt(sess, @@ -386,52 +393,54 @@ pub fn phase_3_run_analysis_passes(sess: Session, // passes are timed inside typeck typeck::check_crate(&ty_cx, trait_map, krate); - time(time_passes, "check static items", (), |_| + time(time_passes, "check static items", (), ref |_| middle::check_static::check_crate(&ty_cx, krate)); // These next two const passes can probably be merged - time(time_passes, "const marking", (), |_| + time(time_passes, "const marking", (), ref |_| middle::const_eval::process_crate(krate, &ty_cx)); - time(time_passes, "const checking", (), |_| + time(time_passes, "const checking", (), ref |_| middle::check_const::check_crate(krate, &ty_cx)); let maps = (external_exports, last_private_map); let (exported_items, public_items) = - time(time_passes, "privacy checking", maps, |(a, b)| + time(time_passes, "privacy checking", maps, ref |(a, b)| middle::privacy::check_crate(&ty_cx, &exp_map2, a, b, krate)); - time(time_passes, "intrinsic checking", (), |_| + time(time_passes, "intrinsic checking", (), ref |_| middle::intrinsicck::check_crate(&ty_cx, krate)); - time(time_passes, "effect checking", (), |_| + time(time_passes, "effect checking", (), ref |_| middle::effect::check_crate(&ty_cx, krate)); - time(time_passes, "match checking", (), |_| + time(time_passes, "match checking", (), ref |_| middle::check_match::check_crate(&ty_cx, krate)); - time(time_passes, "liveness checking", (), |_| + time(time_passes, "liveness checking", (), ref |_| middle::liveness::check_crate(&ty_cx, krate)); - time(time_passes, "borrow checking", (), |_| + time(time_passes, "borrow checking", (), ref |_| middle::borrowck::check_crate(&ty_cx, krate)); - time(time_passes, "kind checking", (), |_| + time(time_passes, "kind checking", (), ref |_| kind::check_crate(&ty_cx, krate)); let reachable_map = - time(time_passes, "reachability checking", (), |_| - reachable::find_reachable(&ty_cx, &exported_items)); + time(time_passes, "reachability checking", (), ref |_| { + reachable::find_reachable(&ty_cx, &exported_items) + }); - time(time_passes, "death checking", (), |_| { + time(time_passes, "death checking", (), ref |_| { middle::dead::check_crate(&ty_cx, &exported_items, &reachable_map, krate) }); - time(time_passes, "lint checking", (), |_| - lint::check_crate(&ty_cx, krate, &exported_items)); + time(time_passes, "lint checking", (), ref |_| { + lint::check_crate(&ty_cx, krate, &exported_items) + }); CrateAnalysis { exp_map2: exp_map2, @@ -471,12 +480,14 @@ pub fn phase_4_translate_to_llvm(krate: ast::Crate, analysis: CrateAnalysis) -> (ty::ctxt, CrateTranslation) { let time_passes = analysis.ty_cx.sess.time_passes(); - time(time_passes, "resolving dependency formats", (), |_| + time(time_passes, "resolving dependency formats", (), ref |_| dependency_format::calculate(&analysis.ty_cx)); // Option dance to work around the lack of stack once closures. - time(time_passes, "translation", (krate, analysis), |(krate, analysis)| - trans::base::trans_crate(krate, analysis)) + time(time_passes, + "translation", + (krate, analysis), + ref |(krate, analysis)| trans::base::trans_crate(krate, analysis)) } /// Run LLVM itself, producing a bitcode file, assembly file or object file @@ -590,7 +601,7 @@ fn write_out_deps(sess: &Session, _ => return, }; - let result = (|| { + let result = (ref || { // Build a list of files used to compile the output and // write Makefile-compatible dependency rules let files: Vec = sess.codemap().files.borrow() @@ -850,7 +861,7 @@ impl UserIdentifiedItem { } fn to_one_node_id(self, user_option: &str, sess: &Session, map: &ast_map::Map) -> ast::NodeId { - let fail_because = |is_wrong_because| -> ast::NodeId { + let fail_because = ref |is_wrong_because| -> ast::NodeId { let message = format!("{:s} needs NodeId (int) or unique \ path suffix (b::c::d); got {:s}, which {:s}", @@ -972,7 +983,7 @@ pub fn pretty_print_input(sess: Session, match (ppm, opt_uii) { (PpmSource(s), None) => s.call_with_pp_support( - sess, &krate, ast_map, id, out, |annotation, out| { + sess, &krate, ast_map, id, out, ref |annotation, out| { debug!("pretty printing source code {}", s); let sess = annotation.sess(); pprust::print_crate(sess.codemap(), @@ -1012,7 +1023,7 @@ pub fn pretty_print_input(sess: Session, (PpmFlowGraph, opt_uii) => { debug!("pretty printing flow graph for {}", opt_uii); - let uii = opt_uii.unwrap_or_else(|| { + let uii = opt_uii.unwrap_or_else(ref || { sess.fatal(format!("`pretty flowgraph=..` needs NodeId (int) or unique path suffix (b::c::d)").as_slice()) @@ -1020,7 +1031,7 @@ pub fn pretty_print_input(sess: Session, let ast_map = ast_map.expect("--pretty flowgraph missing ast_map"); let nodeid = uii.to_one_node_id("--pretty", &sess, &ast_map); - let node = ast_map.find(nodeid).unwrap_or_else(|| { + let node = ast_map.find(nodeid).unwrap_or_else(ref || { sess.fatal(format!("--pretty flowgraph couldn't find id: {}", nodeid).as_slice()) }); diff --git a/src/librustc/driver/mod.rs b/src/librustc/driver/mod.rs index dc600e0da3ec0..be9959d0c8507 100644 --- a/src/librustc/driver/mod.rs +++ b/src/librustc/driver/mod.rs @@ -95,7 +95,7 @@ fn run_compiler(args: &[String]) { let odir = matches.opt_str("out-dir").map(|o| Path::new(o)); let ofile = matches.opt_str("o").map(|o| Path::new(o)); - let pretty = matches.opt_default("pretty", "normal").map(|a| { + let pretty = matches.opt_default("pretty", "normal").map(ref |a| { parse_pretty(&sess, a.as_slice()) }); match pretty { diff --git a/src/librustc/front/config.rs b/src/librustc/front/config.rs index 93320caf5f281..8879b775e7a30 100644 --- a/src/librustc/front/config.rs +++ b/src/librustc/front/config.rs @@ -68,13 +68,13 @@ fn filter_view_item<'r>(cx: &mut Context, view_item: &'r ast::ViewItem) fn fold_mod(cx: &mut Context, m: &ast::Mod) -> ast::Mod { let filtered_items: Vec<&Gc> = m.items.iter() - .filter(|a| item_in_cfg(cx, &***a)) + .filter(ref |a| item_in_cfg(cx, &***a)) .collect(); let flattened_items = filtered_items.move_iter() - .flat_map(|&x| cx.fold_item(x).move_iter()) + .flat_map(ref |&x| cx.fold_item(x).move_iter()) .collect(); let filtered_view_items = m.view_items.iter().filter_map(|a| { - filter_view_item(cx, a).map(|x| cx.fold_view_item(x)) + filter_view_item(cx, a).map(ref |x| cx.fold_view_item(x)) }).collect(); ast::Mod { inner: m.inner, @@ -95,10 +95,10 @@ fn filter_foreign_item(cx: &mut Context, item: Gc) fn fold_foreign_mod(cx: &mut Context, nm: &ast::ForeignMod) -> ast::ForeignMod { let filtered_items = nm.items .iter() - .filter_map(|a| filter_foreign_item(cx, *a)) + .filter_map(ref |a| filter_foreign_item(cx, *a)) .collect(); let filtered_view_items = nm.view_items.iter().filter_map(|a| { - filter_view_item(cx, a).map(|x| cx.fold_view_item(x)) + filter_view_item(cx, a).map(ref |x| cx.fold_view_item(x)) }).collect(); ast::ForeignMod { abi: nm.abi, @@ -111,17 +111,17 @@ fn fold_item_underscore(cx: &mut Context, item: &ast::Item_) -> ast::Item_ { let item = match *item { ast::ItemImpl(ref a, ref b, c, ref impl_items) => { let impl_items = impl_items.iter() - .filter(|ii| { + .filter(ref |ii| { impl_item_in_cfg(cx, &**ii) }) - .map(|x| *x) + .map(ref |x| *x) .collect(); ast::ItemImpl((*a).clone(), (*b).clone(), c, impl_items) } ast::ItemTrait(ref a, ref b, ref c, ref methods) => { let methods = methods.iter() - .filter(|m| trait_method_in_cfg(cx, *m) ) - .map(|x| (*x).clone()) + .filter(ref |m| trait_method_in_cfg(cx, *m) ) + .map(ref |x| (*x).clone()) .collect(); ast::ItemTrait((*a).clone(), (*b).clone(), (*c).clone(), methods) } @@ -129,8 +129,8 @@ fn fold_item_underscore(cx: &mut Context, item: &ast::Item_) -> ast::Item_ { ast::ItemStruct(fold_struct(cx, &**def), generics.clone()) } ast::ItemEnum(ref def, ref generics) => { - let mut variants = def.variants.iter().map(|c| c.clone()). - filter_map(|v| { + let mut variants = def.variants.iter().map(ref |c| c.clone()). + filter_map(ref |v| { if !(cx.in_cfg)(v.node.attrs.as_slice()) { None } else { @@ -160,7 +160,7 @@ fn fold_item_underscore(cx: &mut Context, item: &ast::Item_) -> ast::Item_ { } fn fold_struct(cx: &mut Context, def: &ast::StructDef) -> Gc { - let mut fields = def.fields.iter().map(|c| c.clone()).filter(|m| { + let mut fields = def.fields.iter().map(ref |c| c.clone()).filter(ref |m| { (cx.in_cfg)(m.node.attrs.as_slice()) }); box(GC) ast::StructDef { @@ -187,17 +187,17 @@ fn retain_stmt(cx: &mut Context, stmt: Gc) -> bool { fn fold_block(cx: &mut Context, b: ast::P) -> ast::P { let resulting_stmts: Vec<&Gc> = - b.stmts.iter().filter(|&a| retain_stmt(cx, *a)).collect(); + b.stmts.iter().filter(ref |&a| retain_stmt(cx, *a)).collect(); let resulting_stmts = resulting_stmts.move_iter() - .flat_map(|stmt| cx.fold_stmt(&**stmt).move_iter()) + .flat_map(ref |stmt| cx.fold_stmt(&**stmt).move_iter()) .collect(); - let filtered_view_items = b.view_items.iter().filter_map(|a| { - filter_view_item(cx, a).map(|x| cx.fold_view_item(x)) + let filtered_view_items = b.view_items.iter().filter_map(ref |a| { + filter_view_item(cx, a).map(ref |x| cx.fold_view_item(x)) }).collect(); ast::P(ast::Block { view_items: filtered_view_items, stmts: resulting_stmts, - expr: b.expr.map(|x| cx.fold_expr(x)), + expr: b.expr.map(ref |x| cx.fold_expr(x)), id: b.id, rules: b.rules, span: b.span, @@ -208,8 +208,8 @@ fn fold_expr(cx: &mut Context, expr: Gc) -> Gc { let expr = match expr.node { ast::ExprMatch(ref m, ref arms) => { let arms = arms.iter() - .filter(|a| (cx.in_cfg)(a.attrs.as_slice())) - .map(|a| a.clone()) + .filter(ref |a| (cx.in_cfg)(a.attrs.as_slice())) + .map(ref |a| a.clone()) .collect(); box(GC) ast::Expr { id: expr.id, diff --git a/src/librustc/front/test.rs b/src/librustc/front/test.rs index ceb7dcc54560c..d332d8b64da79 100644 --- a/src/librustc/front/test.rs +++ b/src/librustc/front/test.rs @@ -184,11 +184,11 @@ fn mk_reexport_mod(cx: &mut TestCtxt, tests: Vec, let mut view_items = Vec::new(); let super_ = token::str_to_ident("super"); - view_items.extend(tests.move_iter().map(|r| { + view_items.extend(tests.move_iter().map(ref |r| { cx.ext_cx.view_use_simple(DUMMY_SP, ast::Public, cx.ext_cx.path(DUMMY_SP, vec![super_, r])) })); - view_items.extend(tested_submods.move_iter().map(|r| { + view_items.extend(tested_submods.move_iter().map(ref |r| { let path = cx.ext_cx.path(DUMMY_SP, vec![super_, r, cx.reexport_mod_ident]); cx.ext_cx.view_use_simple_(DUMMY_SP, ast::Public, r, path) })); diff --git a/src/librustc/lint/builtin.rs b/src/librustc/lint/builtin.rs index 7e0ba613e3db5..aaed384d376a4 100644 --- a/src/librustc/lint/builtin.rs +++ b/src/librustc/lint/builtin.rs @@ -414,7 +414,7 @@ impl HeapMemory { fn check_heap_type(&self, cx: &Context, span: Span, ty: ty::t) { let mut n_box = 0i; let mut n_uniq = 0i; - ty::fold_ty(cx.tcx, ty, |t| { + ty::fold_ty(cx.tcx, ty, ref |t| { match ty::get(t).sty { ty::ty_box(_) => { n_box += 1; @@ -839,7 +839,7 @@ impl NonSnakeCaseFunctions { let ident = ident.get().trim_chars('_'); let mut allow_underscore = true; - ident.chars().all(|c| { + ident.chars().all(ref |c| { allow_underscore = match c { c if c.is_lowercase() || c.is_digit() => true, '_' if allow_underscore => false, @@ -1154,13 +1154,17 @@ impl UnusedMut { // avoid false warnings in match arms with multiple patterns let mut mutables = HashMap::new(); for &p in pats.iter() { - pat_util::pat_bindings(&cx.tcx.def_map, &*p, |mode, id, _, path1| { + pat_util::pat_bindings(&cx.tcx.def_map, + &*p, + ref |mode, id, _, path1| { let ident = path1.node; match mode { ast::BindByValue(ast::MutMutable) => { if !token::get_ident(ident).get().starts_with("_") { - mutables.insert_or_update_with(ident.name.uint(), - vec!(id), |_, old| { old.push(id); }); + mutables.insert_or_update_with( + ident.name.uint(), + vec!(id), + ref |_, old| { old.push(id); }); } } _ => { @@ -1171,7 +1175,7 @@ impl UnusedMut { let used_mutables = cx.tcx.used_mut_nodes.borrow(); for (_, v) in mutables.iter() { - if !v.iter().any(|e| used_mutables.contains(e)) { + if !v.iter().any(ref |e| used_mutables.contains(e)) { cx.span_lint(UNUSED_MUT, cx.tcx.map.span(*v.get(0)), "variable does not need to be mutable"); } diff --git a/src/librustc/metadata/creader.rs b/src/librustc/metadata/creader.rs index 321eee3d5fcef..0224352eec709 100644 --- a/src/librustc/metadata/creader.rs +++ b/src/librustc/metadata/creader.rs @@ -81,7 +81,7 @@ fn dump_crates(cstore: &CStore) { fn warn_if_multiple_versions(diag: &SpanHandler, cstore: &CStore) { let mut map = HashMap::new(); - cstore.iter_crate_data(|cnum, data| { + cstore.iter_crate_data(ref |cnum, data| { map.find_or_insert_with(data.name(), |_| Vec::new()).push(cnum); }); @@ -280,7 +280,7 @@ fn visit_item(e: &Env, i: &ast::Item) { fn existing_match(e: &Env, name: &str, hash: Option<&Svh>) -> Option { let mut ret = None; - e.sess.cstore.iter_crate_data(|cnum, data| { + e.sess.cstore.iter_crate_data(ref |cnum, data| { if data.name().as_slice() != name { return } match hash { @@ -301,7 +301,7 @@ fn existing_match(e: &Env, name: &str, let source = e.sess.cstore.get_used_crate_source(cnum).unwrap(); match e.sess.opts.externs.find_equiv(&name) { Some(locs) => { - let found = locs.iter().any(|l| { + let found = locs.iter().any(ref |l| { let l = fs::realpath(&Path::new(l.as_slice())).ok(); l == source.dylib || l == source.rlib }); @@ -404,7 +404,7 @@ fn resolve_crate_deps(e: &mut Env, debug!("resolving deps of external crate"); // The map from crate numbers in the crate we're resolving to local crate // numbers - decoder::get_crate_deps(cdata).iter().map(|dep| { + decoder::get_crate_deps(cdata).iter().map(ref |dep| { debug!("resolving dep crate {} hash: `{}`", dep.name, dep.hash); let (local_cnum, _, _) = resolve_crate(e, root, dep.name.as_slice(), @@ -474,7 +474,9 @@ impl<'a> PluginMetadataReader<'a> { None => { load_ctxt.report_load_errs(); unreachable!() }, }; let macros = decoder::get_exported_macros(library.metadata.as_slice()); - let registrar = decoder::get_plugin_registrar_fn(library.metadata.as_slice()).map(|id| { + let registrar = + decoder::get_plugin_registrar_fn( + library.metadata.as_slice()).map(ref |id| { decoder::get_symbol(library.metadata.as_slice(), id) }); if library.dylib.is_none() && registrar.is_some() { diff --git a/src/librustc/metadata/decoder.rs b/src/librustc/metadata/decoder.rs index 74810261d4a75..504271c28bcbb 100644 --- a/src/librustc/metadata/decoder.rs +++ b/src/librustc/metadata/decoder.rs @@ -68,7 +68,7 @@ fn lookup_hash<'a>(d: rbml::Doc<'a>, eq_fn: |&[u8]| -> bool, let belt = tag_index_buckets_bucket_elt; let mut ret = None; - reader::tagged_docs(tagged_doc.doc, belt, |elt| { + reader::tagged_docs(tagged_doc.doc, belt, ref |elt| { let pos = u64_from_be_bytes(elt.data, elt.start, 4) as uint; if eq_fn(elt.data.slice(elt.start + 4, elt.end)) { ret = Some(reader::doc_at(d.data, pos).unwrap().doc); @@ -168,7 +168,7 @@ fn item_visibility(item: rbml::Doc) -> ast::Visibility { fn item_sort(item: rbml::Doc) -> char { let mut ret = 'r'; - reader::tagged_docs(item, tag_item_trait_item_sort, |doc| { + reader::tagged_docs(item, tag_item_trait_item_sort, ref |doc| { ret = doc.as_str_slice().as_bytes()[0] as char; false }); @@ -181,7 +181,7 @@ fn item_symbol(item: rbml::Doc) -> String { fn item_parent_item(d: rbml::Doc) -> Option { let mut ret = None; - reader::tagged_docs(d, tag_items_data_parent_item, |did| { + reader::tagged_docs(d, tag_items_data_parent_item, ref |did| { ret = Some(reader::with_doc_data(did, parse_def_id)); false }); @@ -200,7 +200,7 @@ fn item_def_id(d: rbml::Doc, cdata: Cmd) -> ast::DefId { } fn get_provided_source(d: rbml::Doc, cdata: Cmd) -> Option { - reader::maybe_get_doc(d, tag_item_method_provided_source).map(|doc| { + reader::maybe_get_doc(d, tag_item_method_provided_source).map(ref |doc| { translate_def_id(cdata, reader::with_doc_data(doc, parse_def_id)) }) } @@ -211,20 +211,21 @@ fn each_reexport(d: rbml::Doc, f: |rbml::Doc| -> bool) -> bool { fn variant_disr_val(d: rbml::Doc) -> Option { reader::maybe_get_doc(d, tag_disr_val).and_then(|val_doc| { - reader::with_doc_data(val_doc, |data| u64::parse_bytes(data, 10u)) + reader::with_doc_data(val_doc, + ref |data| u64::parse_bytes(data, 10u)) }) } fn doc_type(doc: rbml::Doc, tcx: &ty::ctxt, cdata: Cmd) -> ty::t { let tp = reader::get_doc(doc, tag_items_data_item_type); parse_ty_data(tp.data, cdata.cnum, tp.start, tcx, - |_, did| translate_def_id(cdata, did)) + ref |_, did| translate_def_id(cdata, did)) } fn doc_method_fty(doc: rbml::Doc, tcx: &ty::ctxt, cdata: Cmd) -> ty::BareFnTy { let tp = reader::get_doc(doc, tag_item_method_fty); parse_bare_fn_ty_data(tp.data, cdata.cnum, tp.start, tcx, - |_, did| translate_def_id(cdata, did)) + ref |_, did| translate_def_id(cdata, did)) } pub fn item_type(_item_id: ast::DefId, item: rbml::Doc, @@ -234,7 +235,7 @@ pub fn item_type(_item_id: ast::DefId, item: rbml::Doc, fn doc_trait_ref(doc: rbml::Doc, tcx: &ty::ctxt, cdata: Cmd) -> ty::TraitRef { parse_trait_ref_data(doc.data, cdata.cnum, doc.start, tcx, - |_, did| translate_def_id(cdata, did)) + ref |_, did| translate_def_id(cdata, did)) } fn item_trait_ref(doc: rbml::Doc, tcx: &ty::ctxt, cdata: Cmd) -> ty::TraitRef { @@ -248,7 +249,7 @@ fn item_ty_param_defs(item: rbml::Doc, tag: uint) -> subst::VecPerParamSpace { let mut bounds = subst::VecPerParamSpace::empty(); - reader::tagged_docs(item, tag, |p| { + reader::tagged_docs(item, tag, ref |p| { let bd = parse_type_param_def_data( p.data, p.start, cdata.cnum, tcx, |_, did| translate_def_id(cdata, did)); @@ -262,7 +263,7 @@ fn item_region_param_defs(item_doc: rbml::Doc, cdata: Cmd) -> subst::VecPerParamSpace { let mut v = subst::VecPerParamSpace::empty(); - reader::tagged_docs(item_doc, tag_region_param_def, |rp_doc| { + reader::tagged_docs(item_doc, tag_region_param_def, ref |rp_doc| { let ident_str_doc = reader::get_doc(rp_doc, tag_region_param_def_ident); let ident = item_name(&*token::get_ident_interner(), ident_str_doc); @@ -289,7 +290,7 @@ fn item_region_param_defs(item_doc: rbml::Doc, cdata: Cmd) fn enum_variant_ids(item: rbml::Doc, cdata: Cmd) -> Vec { let mut ids: Vec = Vec::new(); let v = tag_items_data_item_variant; - reader::tagged_docs(item, v, |p| { + reader::tagged_docs(item, v, ref |p| { let ext = reader::with_doc_data(p, parse_def_id); ids.push(ast::DefId { krate: cdata.cnum, node: ext.node }); true @@ -304,7 +305,7 @@ fn item_path(item_doc: rbml::Doc) -> Vec { let len = reader::doc_as_u32(len_doc) as uint; let mut result = Vec::with_capacity(len); - reader::docs(path_doc, |tag, elt_doc| { + reader::docs(path_doc, ref |tag, elt_doc| { if tag == tag_path_elem_mod { let s = elt_doc.as_str_slice(); result.push(ast_map::PathMod(token::intern(s))); @@ -388,10 +389,10 @@ pub fn get_trait_def(cdata: Cmd, let mut bounds = ty::empty_builtin_bounds(); // Collect the builtin bounds from the encoded supertraits. // FIXME(#8559): They should be encoded directly. - reader::tagged_docs(item_doc, tag_item_super_trait_ref, |trait_doc| { + reader::tagged_docs(item_doc, tag_item_super_trait_ref, ref |trait_doc| { // NB. Bypasses real supertraits. See get_supertraits() if you wanted them. let trait_ref = doc_trait_ref(trait_doc, tcx, cdata); - tcx.lang_items.to_builtin_kind(trait_ref.def_id).map(|bound| { + tcx.lang_items.to_builtin_kind(trait_ref.def_id).map(ref |bound| { bounds.add(bound); }); true @@ -425,7 +426,7 @@ pub fn get_type(cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt) pub fn get_stability(cdata: Cmd, id: ast::NodeId) -> Option { let item = lookup_item(id, cdata.data()); - reader::maybe_get_doc(item, tag_items_data_item_stability).map(|doc| { + reader::maybe_get_doc(item, tag_items_data_item_stability).map(ref |doc| { let mut decoder = reader::Decoder::new(doc); Decodable::decode(&mut decoder).unwrap() }) @@ -444,8 +445,7 @@ pub fn get_impl_trait(cdata: Cmd, pub fn get_impl_vtables(cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt) - -> typeck::vtable_res -{ + -> typeck::vtable_res { let item_doc = lookup_item(id, cdata.data()); let vtables_doc = reader::get_doc(item_doc, tag_item_impl_vtables); let mut decoder = reader::Decoder::new(vtables_doc); @@ -469,7 +469,7 @@ pub enum DefLike { pub fn each_lang_item(cdata: Cmd, f: |ast::NodeId, uint| -> bool) -> bool { let root = rbml::Doc::new(cdata.data()); let lang_items = reader::get_doc(root, tag_lang_items); - reader::tagged_docs(lang_items, tag_lang_items_item, |item_doc| { + reader::tagged_docs(lang_items, tag_lang_items_item, ref |item_doc| { let id_doc = reader::get_doc(item_doc, tag_lang_items_item_id); let id = reader::doc_as_u32(id_doc) as uint; let node_id_doc = reader::get_doc(item_doc, @@ -490,7 +490,9 @@ fn each_child_of_item_or_crate(intr: Rc, ast::Ident, ast::Visibility|) { // Iterate over all children. - let _ = reader::tagged_docs(item_doc, tag_mod_child, |child_info_doc| { + let _ = reader::tagged_docs(item_doc, + tag_mod_child, + ref |child_info_doc| { let child_def_id = reader::with_doc_data(child_info_doc, parse_def_id); let child_def_id = translate_def_id(cdata, child_def_id); @@ -507,7 +509,8 @@ fn each_child_of_item_or_crate(intr: Rc, None => cdata }; - let other_crates_items = reader::get_doc(rbml::Doc::new(crate_data.data()), tag_items); + let other_crates_items = reader::get_doc(rbml::Doc::new( + crate_data.data()), tag_items); // Get the item. match maybe_find_item(child_def_id.node, other_crates_items) { @@ -532,7 +535,7 @@ fn each_child_of_item_or_crate(intr: Rc, // --pcwalton let _ = reader::tagged_docs(item_doc, tag_items_data_item_inherent_impl, - |inherent_impl_def_id_doc| { + ref |inherent_impl_def_id_doc| { let inherent_impl_def_id = item_def_id(inherent_impl_def_id_doc, cdata); let items = reader::get_doc(rbml::Doc::new(cdata.data()), tag_items); @@ -541,7 +544,7 @@ fn each_child_of_item_or_crate(intr: Rc, Some(inherent_impl_doc) => { let _ = reader::tagged_docs(inherent_impl_doc, tag_item_impl_item, - |impl_item_def_id_doc| { + ref |impl_item_def_id_doc| { let impl_item_def_id = item_def_id(impl_item_def_id_doc, cdata); match maybe_find_item(impl_item_def_id.node, items) { @@ -575,7 +578,7 @@ fn each_child_of_item_or_crate(intr: Rc, }); // Iterate over all reexports. - let _ = each_reexport(item_doc, |reexport_doc| { + let _ = each_reexport(item_doc, ref |reexport_doc| { let def_id_doc = reader::get_doc(reexport_doc, tag_items_data_item_reexport_def_id); let child_def_id = reader::with_doc_data(def_id_doc, @@ -597,7 +600,8 @@ fn each_child_of_item_or_crate(intr: Rc, None => cdata }; - let other_crates_items = reader::get_doc(rbml::Doc::new(crate_data.data()), tag_items); + let other_crates_items = + reader::get_doc(rbml::Doc::new(crate_data.data()), tag_items); // Get the item. match maybe_find_item(child_def_id.node, other_crates_items) { @@ -697,7 +701,7 @@ pub fn get_enum_variants(intr: Rc, cdata: Cmd, id: ast::NodeId, let items = reader::get_doc(rbml::Doc::new(data), tag_items); let item = find_item(id, items); let mut disr_val = 0; - enum_variant_ids(item, cdata).iter().map(|did| { + enum_variant_ids(item, cdata).iter().map(ref |did| { let item = find_item(did.node, items); let ctor_ty = item_type(ast::DefId { krate: cdata.cnum, node: id}, item, tcx, cdata); @@ -758,7 +762,7 @@ pub fn get_impl_items(cdata: Cmd, impl_id: ast::NodeId) -> Vec { let mut impl_items = Vec::new(); reader::tagged_docs(lookup_item(impl_id, cdata.data()), - tag_item_impl_item, |doc| { + tag_item_impl_item, ref |doc| { let def_id = item_def_id(doc, cdata); match item_sort(doc) { 'r' | 'p' => impl_items.push(ty::MethodTraitItemId(def_id)), @@ -838,7 +842,7 @@ pub fn get_trait_item_def_ids(cdata: Cmd, id: ast::NodeId) let data = cdata.data(); let item = lookup_item(id, data); let mut result = Vec::new(); - reader::tagged_docs(item, tag_item_trait_item, |mth| { + reader::tagged_docs(item, tag_item_trait_item, ref |mth| { let def_id = item_def_id(mth, cdata); match item_sort(mth) { 'r' | 'p' => result.push(ty::MethodTraitItemId(def_id)), @@ -866,7 +870,7 @@ pub fn get_provided_trait_methods(intr: Rc, let item = lookup_item(id, data); let mut result = Vec::new(); - reader::tagged_docs(item, tag_item_trait_item, |mth_id| { + reader::tagged_docs(item, tag_item_trait_item, ref |mth_id| { let did = item_def_id(mth_id, cdata); let mth = lookup_item(did.node, data); @@ -892,7 +896,7 @@ pub fn get_supertraits(cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt) -> Vec> { let mut results = Vec::new(); let item_doc = lookup_item(id, cdata.data()); - reader::tagged_docs(item_doc, tag_item_super_trait_ref, |trait_doc| { + reader::tagged_docs(item_doc, tag_item_super_trait_ref, ref |trait_doc| { // NB. Only reads the ones that *aren't* builtin-bounds. See also // get_trait_def() for collecting the builtin bounds. // FIXME(#8559): The builtin bounds shouldn't be encoded in the first place. @@ -913,7 +917,7 @@ pub fn get_type_name_if_impl(cdata: Cmd, } let mut ret = None; - reader::tagged_docs(item, tag_item_impl_type_basename, |doc| { + reader::tagged_docs(item, tag_item_impl_type_basename, ref |doc| { ret = Some(token::str_to_ident(doc.as_str_slice())); false }); @@ -931,14 +935,14 @@ pub fn get_static_methods_if_impl(intr: Rc, } // If this impl implements a trait, don't consider it. - let ret = reader::tagged_docs(item, tag_item_trait_ref, |_doc| { + let ret = reader::tagged_docs(item, tag_item_trait_ref, ref |_doc| { false }); if !ret { return None } let mut impl_method_ids = Vec::new(); - reader::tagged_docs(item, tag_item_impl_item, |impl_method_doc| { + reader::tagged_docs(item, tag_item_impl_item, ref |impl_method_doc| { impl_method_ids.push(item_def_id(impl_method_doc, cdata)); true }); @@ -978,7 +982,9 @@ pub fn get_tuple_struct_definition_if_ctor(cdata: Cmd, { let item = lookup_item(node_id, cdata.data()); let mut ret = None; - reader::tagged_docs(item, tag_items_data_item_is_tuple_struct_ctor, |_| { + reader::tagged_docs(item, + tag_items_data_item_is_tuple_struct_ctor, + ref |_| { ret = Some(item_reqd_and_translated_parent_item(cdata.cnum, item)); false }); @@ -992,7 +998,7 @@ pub fn get_item_attrs(cdata: Cmd, // we assume that someone passing in a tuple struct ctor is actually wanting to // look at the definition let node_id = get_tuple_struct_definition_if_ctor(cdata, orig_node_id); - let node_id = node_id.map(|x| x.node).unwrap_or(orig_node_id); + let node_id = node_id.map(ref |x| x.node).unwrap_or(orig_node_id); let item = lookup_item(node_id, cdata.data()); f(get_attributes(item)); } @@ -1001,7 +1007,7 @@ pub fn get_struct_field_attrs(cdata: Cmd) -> HashMap, cdata: Cmd, id: ast::NodeId) let data = cdata.data(); let item = lookup_item(id, data); let mut result = Vec::new(); - reader::tagged_docs(item, tag_item_field, |an_item| { + reader::tagged_docs(item, tag_item_field, ref |an_item| { let f = item_family(an_item); if f == PublicField || f == InheritedField { // FIXME #6993: name should be of type Name, not Ident @@ -1040,7 +1046,7 @@ pub fn get_struct_fields(intr: Rc, cdata: Cmd, id: ast::NodeId) } true }); - reader::tagged_docs(item, tag_item_unnamed_field, |an_item| { + reader::tagged_docs(item, tag_item_unnamed_field, ref |an_item| { let did = item_def_id(an_item, cdata); let tagdoc = reader::get_doc(an_item, tag_item_field_origin); let f = item_family(an_item); @@ -1058,13 +1064,13 @@ pub fn get_struct_fields(intr: Rc, cdata: Cmd, id: ast::NodeId) fn get_meta_items(md: rbml::Doc) -> Vec> { let mut items: Vec> = Vec::new(); - reader::tagged_docs(md, tag_meta_item_word, |meta_item_doc| { + reader::tagged_docs(md, tag_meta_item_word, ref |meta_item_doc| { let nd = reader::get_doc(meta_item_doc, tag_meta_item_name); let n = token::intern_and_get_ident(nd.as_str_slice()); items.push(attr::mk_word_item(n)); true }); - reader::tagged_docs(md, tag_meta_item_name_value, |meta_item_doc| { + reader::tagged_docs(md, tag_meta_item_name_value, ref |meta_item_doc| { let nd = reader::get_doc(meta_item_doc, tag_meta_item_name); let vd = reader::get_doc(meta_item_doc, tag_meta_item_value); let n = token::intern_and_get_ident(nd.as_str_slice()); @@ -1074,7 +1080,7 @@ fn get_meta_items(md: rbml::Doc) -> Vec> { items.push(attr::mk_name_value_item_str(n, v)); true }); - reader::tagged_docs(md, tag_meta_item_list, |meta_item_doc| { + reader::tagged_docs(md, tag_meta_item_list, ref |meta_item_doc| { let nd = reader::get_doc(meta_item_doc, tag_meta_item_name); let n = token::intern_and_get_ident(nd.as_str_slice()); let subitems = get_meta_items(meta_item_doc); @@ -1088,7 +1094,7 @@ fn get_attributes(md: rbml::Doc) -> Vec { let mut attrs: Vec = Vec::new(); match reader::maybe_get_doc(md, tag_attributes) { Some(attrs_d) => { - reader::tagged_docs(attrs_d, tag_attribute, |attr_doc| { + reader::tagged_docs(attrs_d, tag_attribute, ref |attr_doc| { let is_sugared_doc = reader::doc_as_u8( reader::get_doc(attr_doc, tag_attribute_is_sugared_doc) ) == 1; @@ -1147,7 +1153,7 @@ pub fn get_crate_deps(data: &[u8]) -> Vec { let d = reader::get_doc(doc, tag_); d.as_str_slice().to_string() } - reader::tagged_docs(depsdoc, tag_crate_dep, |depdoc| { + reader::tagged_docs(depsdoc, tag_crate_dep, ref |depdoc| { let name = docstr(depdoc, tag_crate_dep_crate_name); let hash = Svh::new(docstr(depdoc, tag_crate_dep_hash).as_slice()); deps.push(CrateDep { @@ -1193,7 +1199,7 @@ pub fn maybe_get_crate_name(data: &[u8]) -> Option { pub fn get_crate_triple(data: &[u8]) -> Option { let cratedoc = rbml::Doc::new(data); let triple_doc = reader::maybe_get_doc(cratedoc, tag_crate_triple); - triple_doc.map(|s| s.as_str().to_string()) + triple_doc.map(ref |s| s.as_str().to_string()) } pub fn get_crate_name(data: &[u8]) -> String { @@ -1230,7 +1236,7 @@ pub fn translate_def_id(cdata: Cmd, did: ast::DefId) -> ast::DefId { pub fn each_impl(cdata: Cmd, callback: |ast::DefId|) { let impls_doc = reader::get_doc(rbml::Doc::new(cdata.data()), tag_impls); - let _ = reader::tagged_docs(impls_doc, tag_impls_impl, |impl_doc| { + let _ = reader::tagged_docs(impls_doc, tag_impls_impl, ref |impl_doc| { callback(item_def_id(impl_doc, cdata)); true }); @@ -1242,7 +1248,7 @@ pub fn each_implementation_for_type(cdata: Cmd, let item_doc = lookup_item(id, cdata.data()); reader::tagged_docs(item_doc, tag_items_data_item_inherent_impl, - |impl_doc| { + ref |impl_doc| { let implementation_def_id = item_def_id(impl_doc, cdata); callback(implementation_def_id); true @@ -1256,7 +1262,7 @@ pub fn each_implementation_for_trait(cdata: Cmd, let _ = reader::tagged_docs(item_doc, tag_items_data_item_extension_impl, - |impl_doc| { + ref |impl_doc| { let implementation_def_id = item_def_id(impl_doc, cdata); callback(implementation_def_id); true @@ -1276,7 +1282,9 @@ pub fn get_trait_of_item(cdata: Cmd, id: ast::NodeId, tcx: &ty::ctxt) Trait => Some(item_def_id(parent_item_doc, cdata)), Impl => { reader::maybe_get_doc(parent_item_doc, tag_item_trait_ref) - .map(|_| item_trait_ref(parent_item_doc, tcx, cdata).def_id) + .map(ref |_| { + item_trait_ref(parent_item_doc, tcx, cdata).def_id + }) } _ => None } @@ -1288,7 +1296,7 @@ pub fn get_native_libraries(cdata: Cmd) let libraries = reader::get_doc(rbml::Doc::new(cdata.data()), tag_native_libraries); let mut result = Vec::new(); - reader::tagged_docs(libraries, tag_native_libraries_lib, |lib_doc| { + reader::tagged_docs(libraries, tag_native_libraries_lib, ref |lib_doc| { let kind_doc = reader::get_doc(lib_doc, tag_native_libraries_kind); let name_doc = reader::get_doc(lib_doc, tag_native_libraries_name); let kind: cstore::NativeLibaryKind = @@ -1309,7 +1317,7 @@ pub fn get_exported_macros(data: &[u8]) -> Vec { let macros = reader::get_doc(rbml::Doc::new(data), tag_exported_macros); let mut result = Vec::new(); - reader::tagged_docs(macros, tag_macro_def, |macro_doc| { + reader::tagged_docs(macros, tag_macro_def, ref |macro_doc| { result.push(macro_doc.as_str().to_string()); true }); @@ -1347,7 +1355,7 @@ pub fn get_missing_lang_items(cdata: Cmd) { let items = reader::get_doc(rbml::Doc::new(cdata.data()), tag_lang_items); let mut result = Vec::new(); - reader::tagged_docs(items, tag_lang_items_missing, |missing_doc| { + reader::tagged_docs(items, tag_lang_items_missing, ref |missing_doc| { let item: lang_items::LangItem = FromPrimitive::from_u32(reader::doc_as_u32(missing_doc)).unwrap(); result.push(item); @@ -1361,7 +1369,9 @@ pub fn get_method_arg_names(cdata: Cmd, id: ast::NodeId) -> Vec { let method_doc = lookup_item(id, cdata.data()); match reader::maybe_get_doc(method_doc, tag_method_argument_names) { Some(args_doc) => { - reader::tagged_docs(args_doc, tag_method_argument_name, |name_doc| { + reader::tagged_docs(args_doc, + tag_method_argument_name, + ref |name_doc| { ret.push(name_doc.as_str_slice().to_string()); true }); @@ -1375,7 +1385,7 @@ pub fn get_reachable_extern_fns(cdata: Cmd) -> Vec { let mut ret = Vec::new(); let items = reader::get_doc(rbml::Doc::new(cdata.data()), tag_reachable_extern_fns); - reader::tagged_docs(items, tag_reachable_extern_fn_id, |doc| { + reader::tagged_docs(items, tag_reachable_extern_fn_id, ref |doc| { ret.push(ast::DefId { krate: cdata.cnum, node: reader::doc_as_u32(doc), diff --git a/src/librustc/metadata/encoder.rs b/src/librustc/metadata/encoder.rs index 29b5db51cc429..c75d040d018ef 100644 --- a/src/librustc/metadata/encoder.rs +++ b/src/librustc/metadata/encoder.rs @@ -365,7 +365,8 @@ fn encode_enum_variant_info(ecx: &EncodeContext, encode_bounds_and_type(rbml_w, ecx, &lookup_item_type(ecx.tcx, def_id)); - ecx.tcx.map.with_path(variant.node.id, |path| encode_path(rbml_w, path)); + ecx.tcx.map.with_path(variant.node.id, + ref |path| encode_path(rbml_w, path)); rbml_w.end_tag(); disr_val += 1; i += 1; @@ -594,7 +595,7 @@ fn encode_info_for_mod(ecx: &EncodeContext, rbml_w.wr_str(def_to_string(local_def(item.id)).as_slice()); rbml_w.end_tag(); - each_auxiliary_node_id(*item, |auxiliary_node_id| { + each_auxiliary_node_id(*item, ref |auxiliary_node_id| { rbml_w.start_tag(tag_mod_child); rbml_w.wr_str(def_to_string(local_def( auxiliary_node_id)).as_slice()); @@ -774,7 +775,7 @@ fn encode_info_for_struct_ctor(ecx: &EncodeContext, &lookup_item_type(ecx.tcx, local_def(ctor_id))); encode_name(rbml_w, name.name); encode_type(ecx, rbml_w, node_id_to_type(ecx.tcx, ctor_id)); - ecx.tcx.map.with_path(ctor_id, |path| encode_path(rbml_w, path)); + ecx.tcx.map.with_path(ctor_id, ref |path| encode_path(rbml_w, path)); encode_parent_item(rbml_w, local_def(struct_id)); if ecx.item_symbols.borrow().contains_key(&ctor_id) { @@ -1407,7 +1408,7 @@ fn my_visit_item(i: &Item, let mut rbml_w = unsafe { rbml_w.unsafe_clone() }; // See above let ecx: &EncodeContext = unsafe { mem::transmute(ecx_ptr) }; - ecx.tcx.map.with_path(i.id, |path| { + ecx.tcx.map.with_path(i.id, ref |path| { encode_info_for_item(ecx, &mut rbml_w, i, index, path, i.vis); }); } @@ -1426,10 +1427,8 @@ fn my_visit_foreign_item(ni: &ForeignItem, rbml_w.unsafe_clone() }; let abi = ecx.tcx.map.get_foreign_abi(ni.id); - ecx.tcx.map.with_path(ni.id, |path| { - encode_info_for_foreign_item(ecx, &mut rbml_w, - ni, index, - path, abi); + ecx.tcx.map.with_path(ni.id, ref |path| { + encode_info_for_foreign_item(ecx, &mut rbml_w, ni, index, path, abi); }); } @@ -1589,7 +1588,7 @@ fn encode_crate_deps(rbml_w: &mut Encoder, cstore: &cstore::CStore) { fn get_ordered_deps(cstore: &cstore::CStore) -> Vec { // Pull the cnums and name,vers,hash out of cstore let mut deps = Vec::new(); - cstore.iter_crate_data(|key, val| { + cstore.iter_crate_data(ref |key, val| { let dep = decoder::CrateDep { cnum: key, name: decoder::get_crate_name(val.data()), @@ -1599,7 +1598,7 @@ fn encode_crate_deps(rbml_w: &mut Encoder, cstore: &cstore::CStore) { }); // Sort by cnum - deps.sort_by(|kv1, kv2| kv1.cnum.cmp(&kv2.cnum)); + deps.sort_by(ref |kv1, kv2| kv1.cnum.cmp(&kv2.cnum)); // Sanity-check the crate numbers let mut expected_cnum = 1; @@ -1823,7 +1822,7 @@ fn encode_misc_info(ecx: &EncodeContext, rbml_w.wr_str(def_to_string(local_def(item.id)).as_slice()); rbml_w.end_tag(); - each_auxiliary_node_id(item, |auxiliary_node_id| { + each_auxiliary_node_id(item, ref |auxiliary_node_id| { rbml_w.start_tag(tag_mod_child); rbml_w.wr_str(def_to_string(local_def( auxiliary_node_id)).as_slice()); diff --git a/src/librustc/metadata/loader.rs b/src/librustc/metadata/loader.rs index 5face544c89bf..31a6c361bd629 100644 --- a/src/librustc/metadata/loader.rs +++ b/src/librustc/metadata/loader.rs @@ -386,7 +386,7 @@ impl<'a> Context<'a> { let dypair = self.dylibname(); // want: crate_name.dir_part() + prefix + crate_name.file_part + "-" - let dylib_prefix = dypair.map(|(prefix, _)| { + let dylib_prefix = dypair.map(ref |(prefix, _)| { format!("{}{}", prefix, self.crate_name) }); let rlib_prefix = format!("lib{}", self.crate_name); @@ -406,7 +406,7 @@ impl<'a> Context<'a> { // of the crate id (path/name/id). // // The goal of this step is to look at as little metadata as possible. - self.filesearch.search(|path| { + self.filesearch.search(ref |path| { let file = match path.filename_str() { None => return FileDoesntMatch, Some(file) => file, @@ -415,7 +415,7 @@ impl<'a> Context<'a> { file.ends_with(".rlib") { (file.slice(rlib_prefix.len(), file.len() - ".rlib".len()), true) - } else if dypair.map_or(false, |(_, suffix)| { + } else if dypair.map_or(false, ref |(_, suffix)| { file.starts_with(dylib_prefix.get_ref().as_slice()) && file.ends_with(suffix) }) { @@ -799,7 +799,7 @@ fn get_metadata_section_imp(os: abi::Os, filename: &Path) -> Result found = Ok(MetadataVec(inflated)), None => { diff --git a/src/librustc/metadata/tydecode.rs b/src/librustc/metadata/tydecode.rs index e6e7d8bf8d1a6..8a566f3d1c272 100644 --- a/src/librustc/metadata/tydecode.rs +++ b/src/librustc/metadata/tydecode.rs @@ -208,11 +208,11 @@ fn parse_vec_per_param_space(st: &mut PState, } fn parse_substs(st: &mut PState, conv: conv_did) -> subst::Substs { - let regions = - parse_region_substs(st, |x,y| conv(x,y)); + let regions = parse_region_substs(st, ref |x,y| conv(x,y)); - let types = - parse_vec_per_param_space(st, |st| parse_ty(st, |x,y| conv(x,y))); + let types = parse_vec_per_param_space(st, ref |st| { + parse_ty(st, ref |x,y| conv(x,y)) + }); return subst::Substs { types: types, regions: regions }; @@ -224,7 +224,7 @@ fn parse_region_substs(st: &mut PState, conv: conv_did) -> subst::RegionSubsts { 'n' => { subst::NonerasedRegions( parse_vec_per_param_space( - st, |st| parse_region(st, |x,y| conv(x,y)))) + st, |st| parse_region(st, ref |x,y| conv(x,y)))) } _ => fail!("parse_bound_region: bad input") } @@ -238,7 +238,7 @@ fn parse_bound_region(st: &mut PState, conv: conv_did) -> ty::BoundRegion { ty::BrAnon(id) } '[' => { - let def = parse_def(st, RegionParameter, |x,y| conv(x,y)); + let def = parse_def(st, RegionParameter, ref |x,y| conv(x,y)); let ident = token::str_to_ident(parse_str(st, ']').as_slice()); ty::BrNamed(def, ident.name) } @@ -276,7 +276,7 @@ fn parse_region(st: &mut PState, conv: conv_did) -> ty::Region { assert_eq!(next(st), '['); let id = parse_uint(st) as ast::NodeId; assert_eq!(next(st), '|'); - let br = parse_bound_region(st, |x,y| conv(x,y)); + let br = parse_bound_region(st, ref |x,y| conv(x,y)); assert_eq!(next(st), ']'); ty::ReFree(ty::FreeRegion {scope_id: id, bound_region: br}) @@ -316,8 +316,8 @@ fn parse_str(st: &mut PState, term: char) -> String { } fn parse_trait_ref(st: &mut PState, conv: conv_did) -> ty::TraitRef { - let def = parse_def(st, NominalType, |x,y| conv(x,y)); - let substs = parse_substs(st, |x,y| conv(x,y)); + let def = parse_def(st, NominalType, ref |x,y| conv(x,y)); + let substs = parse_substs(st, ref |x,y| conv(x,y)); ty::TraitRef {def_id: def, substs: substs} } @@ -346,21 +346,21 @@ fn parse_ty(st: &mut PState, conv: conv_did) -> ty::t { 'c' => return ty::mk_char(), 't' => { assert_eq!(next(st), '['); - let def = parse_def(st, NominalType, |x,y| conv(x,y)); - let substs = parse_substs(st, |x,y| conv(x,y)); + let def = parse_def(st, NominalType, ref |x,y| conv(x,y)); + let substs = parse_substs(st, ref |x,y| conv(x,y)); assert_eq!(next(st), ']'); return ty::mk_enum(st.tcx, def, substs); } 'x' => { assert_eq!(next(st), '['); - let def = parse_def(st, NominalType, |x,y| conv(x,y)); - let substs = parse_substs(st, |x,y| conv(x,y)); - let bounds = parse_bounds(st, |x,y| conv(x,y)); + let def = parse_def(st, NominalType, ref |x,y| conv(x,y)); + let substs = parse_substs(st, ref |x,y| conv(x,y)); + let bounds = parse_bounds(st, ref |x,y| conv(x,y)); assert_eq!(next(st), ']'); return ty::mk_trait(st.tcx, def, substs, bounds.builtin_bounds); } 'p' => { - let did = parse_def(st, TypeParameter, |x,y| conv(x,y)); + let did = parse_def(st, TypeParameter, ref |x,y| conv(x,y)); debug!("parsed ty_param: did={:?}", did); let index = parse_uint(st); assert_eq!(next(st), '|'); @@ -368,16 +368,16 @@ fn parse_ty(st: &mut PState, conv: conv_did) -> ty::t { assert_eq!(next(st), '|'); return ty::mk_param(st.tcx, space, index, did); } - '@' => return ty::mk_box(st.tcx, parse_ty(st, |x,y| conv(x,y))), - '~' => return ty::mk_uniq(st.tcx, parse_ty(st, |x,y| conv(x,y))), - '*' => return ty::mk_ptr(st.tcx, parse_mt(st, |x,y| conv(x,y))), + '@' => return ty::mk_box(st.tcx, parse_ty(st, ref |x,y| conv(x,y))), + '~' => return ty::mk_uniq(st.tcx, parse_ty(st, ref |x,y| conv(x,y))), + '*' => return ty::mk_ptr(st.tcx, parse_mt(st, ref |x,y| conv(x,y))), '&' => { - let r = parse_region(st, |x,y| conv(x,y)); - let mt = parse_mt(st, |x,y| conv(x,y)); + let r = parse_region(st, ref |x,y| conv(x,y)); + let mt = parse_mt(st, ref |x,y| conv(x,y)); return ty::mk_rptr(st.tcx, r, mt); } 'V' => { - let mt = parse_mt(st, |x,y| conv(x,y)); + let mt = parse_mt(st, ref |x,y| conv(x,y)); let sz = parse_size(st); return ty::mk_vec(st.tcx, mt, sz); } @@ -387,15 +387,19 @@ fn parse_ty(st: &mut PState, conv: conv_did) -> ty::t { 'T' => { assert_eq!(next(st), '['); let mut params = Vec::new(); - while peek(st) != ']' { params.push(parse_ty(st, |x,y| conv(x,y))); } + while peek(st) != ']' { + params.push(parse_ty(st, ref |x,y| conv(x,y))); + } st.pos = st.pos + 1u; return ty::mk_tup(st.tcx, params); } 'f' => { - return ty::mk_closure(st.tcx, parse_closure_ty(st, |x,y| conv(x,y))); + return ty::mk_closure(st.tcx, + parse_closure_ty(st, ref |x,y| conv(x,y))); } 'F' => { - return ty::mk_bare_fn(st.tcx, parse_bare_fn_ty(st, |x,y| conv(x,y))); + return ty::mk_bare_fn(st.tcx, + parse_bare_fn_ty(st, ref |x,y| conv(x,y))); } '#' => { let pos = parse_hex(st); @@ -414,24 +418,24 @@ fn parse_ty(st: &mut PState, conv: conv_did) -> ty::t { pos: pos, .. *st }; - let tt = parse_ty(&mut ps, |x,y| conv(x,y)); + let tt = parse_ty(&mut ps, ref |x,y| conv(x,y)); st.tcx.rcache.borrow_mut().insert(key, tt); return tt; } '"' => { - let _ = parse_def(st, TypeWithId, |x,y| conv(x,y)); - let inner = parse_ty(st, |x,y| conv(x,y)); + let _ = parse_def(st, TypeWithId, ref |x,y| conv(x,y)); + let inner = parse_ty(st, ref |x,y| conv(x,y)); inner } 'a' => { assert_eq!(next(st), '['); - let did = parse_def(st, NominalType, |x,y| conv(x,y)); - let substs = parse_substs(st, |x,y| conv(x,y)); + let did = parse_def(st, NominalType, ref |x,y| conv(x,y)); + let substs = parse_substs(st, ref |x,y| conv(x,y)); assert_eq!(next(st), ']'); return ty::mk_struct(st.tcx, did, substs); } 'k' => { - let did = parse_def(st, NominalType, |x,y| conv(x,y)); + let did = parse_def(st, NominalType, ref |x,y| conv(x,y)); let region = parse_region(st, conv); return ty::mk_unboxed_closure(st.tcx, did, region); } @@ -451,12 +455,12 @@ fn parse_mutability(st: &mut PState) -> ast::Mutability { fn parse_mt(st: &mut PState, conv: conv_did) -> ty::mt { let m = parse_mutability(st); - ty::mt { ty: parse_ty(st, |x,y| conv(x,y)), mutbl: m } + ty::mt { ty: parse_ty(st, ref |x,y| conv(x,y)), mutbl: m } } fn parse_def(st: &mut PState, source: DefIdSource, conv: conv_did) -> ast::DefId { - return conv(source, scan(st, |c| { c == '|' }, parse_def_id)); + return conv(source, scan(st, ref |c| { c == '|' }, parse_def_id)); } fn parse_uint(st: &mut PState) -> uint { @@ -514,9 +518,9 @@ fn parse_onceness(c: char) -> ast::Onceness { fn parse_closure_ty(st: &mut PState, conv: conv_did) -> ty::ClosureTy { let fn_style = parse_fn_style(next(st)); let onceness = parse_onceness(next(st)); - let store = parse_trait_store(st, |x,y| conv(x,y)); - let bounds = parse_bounds(st, |x,y| conv(x,y)); - let sig = parse_sig(st, |x,y| conv(x,y)); + let store = parse_trait_store(st, ref |x,y| conv(x,y)); + let bounds = parse_bounds(st, ref |x,y| conv(x,y)); + let sig = parse_sig(st, ref |x,y| conv(x,y)); let abi = parse_abi_set(st); ty::ClosureTy { fn_style: fn_style, @@ -531,7 +535,7 @@ fn parse_closure_ty(st: &mut PState, conv: conv_did) -> ty::ClosureTy { fn parse_bare_fn_ty(st: &mut PState, conv: conv_did) -> ty::BareFnTy { let fn_style = parse_fn_style(next(st)); let abi = parse_abi_set(st); - let sig = parse_sig(st, |x,y| conv(x,y)); + let sig = parse_sig(st, ref |x,y| conv(x,y)); ty::BareFnTy { fn_style: fn_style, abi: abi, @@ -545,7 +549,7 @@ fn parse_sig(st: &mut PState, conv: conv_did) -> ty::FnSig { assert_eq!(next(st), '|'); let mut inputs = Vec::new(); while peek(st) != ']' { - inputs.push(parse_ty(st, |x,y| conv(x,y))); + inputs.push(parse_ty(st, ref |x,y| conv(x,y))); } st.pos += 1u; // eat the ']' let variadic = match next(st) { @@ -553,7 +557,7 @@ fn parse_sig(st: &mut PState, conv: conv_did) -> ty::FnSig { 'N' => false, r => fail!(format!("bad variadic: {}", r)), }; - let ret_ty = parse_ty(st, |x,y| conv(x,y)); + let ret_ty = parse_ty(st, ref |x,y| conv(x,y)); ty::FnSig {binder_id: id, inputs: inputs, output: ret_ty, @@ -564,7 +568,9 @@ fn parse_sig(st: &mut PState, conv: conv_did) -> ty::FnSig { pub fn parse_def_id(buf: &[u8]) -> ast::DefId { let mut colon_idx = 0u; let len = buf.len(); - while colon_idx < len && buf[colon_idx] != ':' as u8 { colon_idx += 1u; } + while colon_idx < len && buf[colon_idx] != ':' as u8 { + colon_idx += 1u; + } if colon_idx == len { error!("didn't find ':' when parsing def id"); fail!(); @@ -596,13 +602,13 @@ pub fn parse_type_param_def_data(data: &[u8], start: uint, fn parse_type_param_def(st: &mut PState, conv: conv_did) -> ty::TypeParameterDef { let ident = parse_ident(st, ':'); - let def_id = parse_def(st, NominalType, |x,y| conv(x,y)); + let def_id = parse_def(st, NominalType, ref |x,y| conv(x,y)); let space = parse_param_space(st); assert_eq!(next(st), '|'); let index = parse_uint(st); assert_eq!(next(st), '|'); - let bounds = Rc::new(parse_bounds(st, |x,y| conv(x,y))); - let default = parse_opt(st, |st| parse_ty(st, |x,y| conv(x,y))); + let bounds = Rc::new(parse_bounds(st, ref |x,y| conv(x,y))); + let default = parse_opt(st, ref |st| parse_ty(st, ref |x,y| conv(x,y))); ty::TypeParameterDef { ident: ident, @@ -637,7 +643,8 @@ fn parse_bounds(st: &mut PState, conv: conv_did) -> ty::ParamBounds { param_bounds.builtin_bounds.add(ty::BoundSync); } 'I' => { - param_bounds.trait_bounds.push(Rc::new(parse_trait_ref(st, |x,y| conv(x,y)))); + param_bounds.trait_bounds.push(Rc::new( + parse_trait_ref(st, ref |x,y| conv(x,y)))); } '.' => { return param_bounds; diff --git a/src/librustc/middle/astencode.rs b/src/librustc/middle/astencode.rs index 3359d7ed030c4..1150f09928c6a 100644 --- a/src/librustc/middle/astencode.rs +++ b/src/librustc/middle/astencode.rs @@ -831,9 +831,9 @@ impl<'a> vtable_decoder_helpers for reader::Decoder<'a> { f: |&mut reader::Decoder<'a>| -> T) -> VecPerParamSpace { - let types = self.read_to_vec(|this| Ok(f(this))).unwrap(); - let selfs = self.read_to_vec(|this| Ok(f(this))).unwrap(); - let fns = self.read_to_vec(|this| Ok(f(this))).unwrap(); + let types = self.read_to_vec(ref |this| Ok(f(this))).unwrap(); + let selfs = self.read_to_vec(ref |this| Ok(f(this))).unwrap(); + let fns = self.read_to_vec(ref |this| Ok(f(this))).unwrap(); VecPerParamSpace::new(types, selfs, fns) } @@ -841,7 +841,7 @@ impl<'a> vtable_decoder_helpers for reader::Decoder<'a> { tcx: &ty::ctxt, cdata: &cstore::crate_metadata) -> (typeck::ExprAdjustment, typeck::vtable_res) { - self.read_struct("VtableWithKey", 2, |this| { + self.read_struct("VtableWithKey", 2, ref |this| { let adjustment = this.read_struct_field("adjustment", 0, |this| { Decodable::decode(this) }).unwrap(); @@ -857,52 +857,52 @@ impl<'a> vtable_decoder_helpers for reader::Decoder<'a> { -> typeck::vtable_res { self.read_vec_per_param_space( - |this| this.read_vtable_param_res(tcx, cdata)) + ref |this| this.read_vtable_param_res(tcx, cdata)) } fn read_vtable_param_res(&mut self, tcx: &ty::ctxt, cdata: &cstore::crate_metadata) -> typeck::vtable_param_res { - self.read_to_vec(|this| Ok(this.read_vtable_origin(tcx, cdata))) + self.read_to_vec(ref |this| Ok(this.read_vtable_origin(tcx, cdata))) .unwrap().move_iter().collect() } fn read_vtable_origin(&mut self, tcx: &ty::ctxt, cdata: &cstore::crate_metadata) -> typeck::vtable_origin { - self.read_enum("vtable_origin", |this| { + self.read_enum("vtable_origin", ref |this| { this.read_enum_variant(["vtable_static", "vtable_param", "vtable_error", "vtable_unboxed_closure"], - |this, i| { + ref |this, i| { Ok(match i { 0 => { typeck::vtable_static( - this.read_enum_variant_arg(0u, |this| { + this.read_enum_variant_arg(0u, ref |this| { Ok(this.read_def_id_noxcx(cdata)) }).unwrap(), - this.read_enum_variant_arg(1u, |this| { + this.read_enum_variant_arg(1u, ref |this| { Ok(this.read_substs_noxcx(tcx, cdata)) }).unwrap(), - this.read_enum_variant_arg(2u, |this| { + this.read_enum_variant_arg(2u, ref |this| { Ok(this.read_vtable_res(tcx, cdata)) }).unwrap() ) } 1 => { typeck::vtable_param( - this.read_enum_variant_arg(0u, |this| { + this.read_enum_variant_arg(0u, ref |this| { Decodable::decode(this) }).unwrap(), - this.read_enum_variant_arg(1u, |this| { + this.read_enum_variant_arg(1u, ref |this| { this.read_uint() }).unwrap() ) } 2 => { typeck::vtable_unboxed_closure( - this.read_enum_variant_arg(0u, |this| { + this.read_enum_variant_arg(0u, ref |this| { Ok(this.read_def_id_noxcx(cdata)) }).unwrap() ) @@ -925,7 +925,7 @@ fn encode_vec_per_param_space(rbml_w: &mut Encoder, f: |&mut Encoder, &T|) { for &space in subst::ParamSpace::all().iter() { rbml_w.emit_from_vec(v.get_slice(space), - |rbml_w, n| Ok(f(rbml_w, n))).unwrap(); + ref |rbml_w, n| Ok(f(rbml_w, n))).unwrap(); } } @@ -967,17 +967,17 @@ impl<'a> rbml_writer_helpers for Encoder<'a> { fn emit_closure_type(&mut self, ecx: &e::EncodeContext, closure_type: &ty::ClosureTy) { - self.emit_opaque(|this| { + self.emit_opaque(ref |this| { Ok(e::write_closure_type(ecx, this, closure_type)) }); } fn emit_ty(&mut self, ecx: &e::EncodeContext, ty: ty::t) { - self.emit_opaque(|this| Ok(e::write_type(ecx, this, ty))); + self.emit_opaque(ref |this| Ok(e::write_type(ecx, this, ty))); } fn emit_tys(&mut self, ecx: &e::EncodeContext, tys: &[ty::t]) { - self.emit_from_vec(tys, |this, ty| Ok(this.emit_ty(ecx, *ty))); + self.emit_from_vec(tys, ref |this, ty| Ok(this.emit_ty(ecx, *ty))); } fn emit_type_param_def(&mut self, @@ -995,56 +995,70 @@ impl<'a> rbml_writer_helpers for Encoder<'a> { pty: ty::Polytype) { use serialize::Encoder; - self.emit_struct("Polytype", 2, |this| { - this.emit_struct_field("generics", 0, |this| { - this.emit_struct("Generics", 2, |this| { - this.emit_struct_field("types", 0, |this| { + self.emit_struct("Polytype", 2, ref |this| { + this.emit_struct_field("generics", 0, ref |this| { + this.emit_struct("Generics", 2, ref |this| { + this.emit_struct_field("types", 0, ref |this| { Ok(encode_vec_per_param_space( this, &pty.generics.types, - |this, def| this.emit_type_param_def(ecx, def))) + ref |this, def| { + this.emit_type_param_def(ecx, def) + })) }); - this.emit_struct_field("regions", 1, |this| { + this.emit_struct_field("regions", 1, ref |this| { Ok(encode_vec_per_param_space( this, &pty.generics.regions, - |this, def| def.encode(this).unwrap())) + ref |this, def| def.encode(this).unwrap())) }) }) }); - this.emit_struct_field("ty", 1, |this| { + this.emit_struct_field("ty", 1, ref |this| { Ok(this.emit_ty(ecx, pty.ty)) }) }); } fn emit_substs(&mut self, ecx: &e::EncodeContext, substs: &subst::Substs) { - self.emit_opaque(|this| Ok(tyencode::enc_substs(this.writer, - &ecx.ty_str_ctxt(), - substs))); + self.emit_opaque(ref |this| { + Ok(tyencode::enc_substs(this.writer, &ecx.ty_str_ctxt(), substs)) + }); } fn emit_auto_adjustment(&mut self, ecx: &e::EncodeContext, adj: &ty::AutoAdjustment) { use serialize::Encoder; - self.emit_enum("AutoAdjustment", |this| { + self.emit_enum("AutoAdjustment", ref |this| { match *adj { ty::AutoAddEnv(store) => { - this.emit_enum_variant("AutoAddEnv", 0, 1, |this| { - this.emit_enum_variant_arg(0, |this| store.encode(this)) + this.emit_enum_variant("AutoAddEnv", 0, 1, ref |this| { + this.emit_enum_variant_arg(0, ref |this| { + store.encode(this) + }) }) } ty::AutoDerefRef(ref auto_deref_ref) => { - this.emit_enum_variant("AutoDerefRef", 1, 1, |this| { - this.emit_enum_variant_arg(0, |this| auto_deref_ref.encode(this)) + this.emit_enum_variant("AutoDerefRef", 1, 1, ref |this| { + this.emit_enum_variant_arg(0, ref |this| { + auto_deref_ref.encode(this) + }) }) } ty::AutoObject(store, b, def_id, ref substs) => { - this.emit_enum_variant("AutoObject", 2, 4, |this| { - this.emit_enum_variant_arg(0, |this| store.encode(this)); - this.emit_enum_variant_arg(1, |this| b.encode(this)); - this.emit_enum_variant_arg(2, |this| def_id.encode(this)); - this.emit_enum_variant_arg(3, |this| Ok(this.emit_substs(ecx, substs))) + this.emit_enum_variant("AutoObject", 2, 4, ref |this| { + this.emit_enum_variant_arg(0, ref |this| { + store.encode(this) + }); + this.emit_enum_variant_arg(1, ref |this| { + b.encode(this) + }); + this.emit_enum_variant_arg(2, ref |this| { + def_id.encode(this) + }); + this.emit_enum_variant_arg(3, ref |this| { + Ok(this.emit_substs(ecx, substs)) + }) }) } } @@ -1123,35 +1137,37 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, debug!("Encoding side tables for id {}", id); for def in tcx.def_map.borrow().find(&id).iter() { - rbml_w.tag(c::tag_table_def, |rbml_w| { + rbml_w.tag(c::tag_table_def, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| (*def).encode(rbml_w).unwrap()); + rbml_w.tag(c::tag_table_val, ref |rbml_w| { + (*def).encode(rbml_w).unwrap() + }); }) } for &ty in tcx.node_types.borrow().find(&(id as uint)).iter() { - rbml_w.tag(c::tag_table_node_type, |rbml_w| { + rbml_w.tag(c::tag_table_node_type, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { rbml_w.emit_ty(ecx, *ty); }) }) } for &item_substs in tcx.item_substs.borrow().find(&id).iter() { - rbml_w.tag(c::tag_table_item_subst, |rbml_w| { + rbml_w.tag(c::tag_table_item_subst, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { rbml_w.emit_substs(ecx, &item_substs.substs); }) }) } for &fv in tcx.freevars.borrow().find(&id).iter() { - rbml_w.tag(c::tag_table_freevars, |rbml_w| { + rbml_w.tag(c::tag_table_freevars, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { - rbml_w.emit_from_vec(fv.as_slice(), |rbml_w, fv_entry| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { + rbml_w.emit_from_vec(fv.as_slice(), ref |rbml_w, fv_entry| { Ok(encode_freevar_entry(rbml_w, fv_entry)) }); }) @@ -1160,9 +1176,9 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, for freevar in fv.iter() { match freevars::get_capture_mode(tcx, id) { freevars::CaptureByRef => { - rbml_w.tag(c::tag_table_upvar_borrow_map, |rbml_w| { + rbml_w.tag(c::tag_table_upvar_borrow_map, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { let var_id = freevar.def.def_id().node; let upvar_id = ty::UpvarId { var_id: var_id, @@ -1181,9 +1197,9 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, } for &cm in tcx.capture_modes.borrow().find(&id).iter() { - rbml_w.tag(c::tag_table_capture_modes, |rbml_w| { + rbml_w.tag(c::tag_table_capture_modes, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { encode_capture_mode(rbml_w, *cm); }) }) @@ -1191,18 +1207,18 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, let lid = ast::DefId { krate: ast::LOCAL_CRATE, node: id }; for &pty in tcx.tcache.borrow().find(&lid).iter() { - rbml_w.tag(c::tag_table_tcache, |rbml_w| { + rbml_w.tag(c::tag_table_tcache, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { rbml_w.emit_polytype(ecx, pty.clone()); }) }) } for &type_param_def in tcx.ty_param_defs.borrow().find(&id).iter() { - rbml_w.tag(c::tag_table_param_defs, |rbml_w| { + rbml_w.tag(c::tag_table_param_defs, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { rbml_w.emit_type_param_def(ecx, type_param_def) }) }) @@ -1210,18 +1226,18 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, let method_call = MethodCall::expr(id); for &method in tcx.method_map.borrow().find(&method_call).iter() { - rbml_w.tag(c::tag_table_method_map, |rbml_w| { + rbml_w.tag(c::tag_table_method_map, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { encode_method_callee(ecx, rbml_w, method_call.adjustment, method) }) }) } for &dr in tcx.vtable_map.borrow().find(&method_call).iter() { - rbml_w.tag(c::tag_table_vtable_map, |rbml_w| { + rbml_w.tag(c::tag_table_vtable_map, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { encode_vtable_res_with_key(ecx, rbml_w, method_call.adjustment, dr); }) }) @@ -1233,9 +1249,9 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, for autoderef in range(0, adj.autoderefs) { let method_call = MethodCall::autoderef(id, autoderef); for &method in tcx.method_map.borrow().find(&method_call).iter() { - rbml_w.tag(c::tag_table_method_map, |rbml_w| { + rbml_w.tag(c::tag_table_method_map, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { encode_method_callee(ecx, rbml_w, method_call.adjustment, method) }) @@ -1243,9 +1259,9 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, } for &dr in tcx.vtable_map.borrow().find(&method_call).iter() { - rbml_w.tag(c::tag_table_vtable_map, |rbml_w| { + rbml_w.tag(c::tag_table_vtable_map, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { encode_vtable_res_with_key(ecx, rbml_w, method_call.adjustment, dr); }) @@ -1256,18 +1272,18 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, ty::AutoObject(..) => { let method_call = MethodCall::autoobject(id); for &method in tcx.method_map.borrow().find(&method_call).iter() { - rbml_w.tag(c::tag_table_method_map, |rbml_w| { + rbml_w.tag(c::tag_table_method_map, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { encode_method_callee(ecx, rbml_w, method_call.adjustment, method) }) }) } for &dr in tcx.vtable_map.borrow().find(&method_call).iter() { - rbml_w.tag(c::tag_table_vtable_map, |rbml_w| { + rbml_w.tag(c::tag_table_vtable_map, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { encode_vtable_res_with_key(ecx, rbml_w, method_call.adjustment, dr); }) }) @@ -1276,9 +1292,9 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, _ => {} } - rbml_w.tag(c::tag_table_adjustments, |rbml_w| { + rbml_w.tag(c::tag_table_adjustments, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { rbml_w.emit_auto_adjustment(ecx, adj); }) }) @@ -1288,9 +1304,9 @@ fn encode_side_tables_for_id(ecx: &e::EncodeContext, .borrow() .find(&ast_util::local_def(id)) .iter() { - rbml_w.tag(c::tag_table_unboxed_closures, |rbml_w| { + rbml_w.tag(c::tag_table_unboxed_closures, ref |rbml_w| { rbml_w.id(id); - rbml_w.tag(c::tag_table_val, |rbml_w| { + rbml_w.tag(c::tag_table_val, ref |rbml_w| { rbml_w.emit_closure_type(ecx, &unboxed_closure.closure_type); encode_unboxed_closure_kind(rbml_w, unboxed_closure.kind) }) @@ -1348,14 +1364,14 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { cdata.cnum, doc.start, tcx, - |_, id| decoder::translate_def_id(cdata, id))) + ref |_, id| decoder::translate_def_id(cdata, id))) }).unwrap() } fn read_tys_noxcx(&mut self, tcx: &ty::ctxt, cdata: &cstore::crate_metadata) -> Vec { - self.read_to_vec(|this| Ok(this.read_ty_noxcx(tcx, cdata)) ) + self.read_to_vec(ref |this| Ok(this.read_ty_noxcx(tcx, cdata)) ) .unwrap() .move_iter() .collect() @@ -1366,13 +1382,13 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { cdata: &cstore::crate_metadata) -> subst::Substs { - self.read_opaque(|_, doc| { + self.read_opaque(ref |_, doc| { Ok(tydecode::parse_substs_data( doc.data, cdata.cnum, doc.start, tcx, - |_, id| decoder::translate_def_id(cdata, id))) + ref |_, id| decoder::translate_def_id(cdata, id))) }).unwrap() } @@ -1382,7 +1398,7 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { // context. However, we do not bother, because region types // are not used during trans. - return self.read_opaque(|this, doc| { + return self.read_opaque(ref |this, doc| { debug!("read_ty({})", type_string(doc)); let ty = tydecode::parse_ty_data( @@ -1390,7 +1406,7 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { xcx.dcx.cdata.cnum, doc.start, xcx.dcx.tcx, - |s, a| this.convert_def_id(xcx, s, a)); + ref |s, a| this.convert_def_id(xcx, s, a)); Ok(ty) }).unwrap(); @@ -1405,43 +1421,47 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { } fn read_tys(&mut self, xcx: &ExtendedDecodeContext) -> Vec { - self.read_to_vec(|this| Ok(this.read_ty(xcx))).unwrap().move_iter().collect() + self.read_to_vec(ref |this| { + Ok(this.read_ty(xcx)) + }).unwrap().move_iter().collect() } fn read_type_param_def(&mut self, xcx: &ExtendedDecodeContext) -> ty::TypeParameterDef { - self.read_opaque(|this, doc| { + self.read_opaque(ref |this, doc| { Ok(tydecode::parse_type_param_def_data( doc.data, doc.start, xcx.dcx.cdata.cnum, xcx.dcx.tcx, - |s, a| this.convert_def_id(xcx, s, a))) + ref |s, a| this.convert_def_id(xcx, s, a))) }).unwrap() } fn read_polytype(&mut self, xcx: &ExtendedDecodeContext) -> ty::Polytype { - self.read_struct("Polytype", 2, |this| { + self.read_struct("Polytype", 2, ref |this| { Ok(ty::Polytype { - generics: this.read_struct_field("generics", 0, |this| { - this.read_struct("Generics", 2, |this| { + generics: this.read_struct_field("generics", 0, ref |this| { + this.read_struct("Generics", 2, ref |this| { Ok(ty::Generics { types: - this.read_struct_field("types", 0, |this| { + this.read_struct_field("types", 0, ref |this| { Ok(this.read_vec_per_param_space( - |this| this.read_type_param_def(xcx))) + ref |this| this.read_type_param_def(xcx))) }).unwrap(), regions: - this.read_struct_field("regions", 1, |this| { + this.read_struct_field("regions", 1, ref |this| { Ok(this.read_vec_per_param_space( - |this| Decodable::decode(this).unwrap())) + ref |this| { + Decodable::decode(this).unwrap() + })) }).unwrap() }) }) }).unwrap(), - ty: this.read_struct_field("ty", 1, |this| { + ty: this.read_struct_field("ty", 1, ref |this| { Ok(this.read_ty(xcx)) }).unwrap() }) @@ -1449,12 +1469,14 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { } fn read_substs(&mut self, xcx: &ExtendedDecodeContext) -> subst::Substs { - self.read_opaque(|this, doc| { + self.read_opaque(ref |this, doc| { Ok(tydecode::parse_substs_data(doc.data, - xcx.dcx.cdata.cnum, - doc.start, - xcx.dcx.tcx, - |s, a| this.convert_def_id(xcx, s, a))) + xcx.dcx.cdata.cnum, + doc.start, + xcx.dcx.tcx, + ref |s, a| { + this.convert_def_id(xcx, s, a) + })) }).unwrap() } @@ -1465,25 +1487,37 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { Ok(match i { 0 => { let store: ty::TraitStore = - this.read_enum_variant_arg(0, |this| Decodable::decode(this)).unwrap(); + this.read_enum_variant_arg(0, ref |this| { + Decodable::decode(this) + }).unwrap(); ty:: AutoAddEnv(store.tr(xcx)) } 1 => { let auto_deref_ref: ty::AutoDerefRef = - this.read_enum_variant_arg(0, |this| Decodable::decode(this)).unwrap(); + this.read_enum_variant_arg(0, ref |this| { + Decodable::decode(this) + }).unwrap(); ty::AutoDerefRef(auto_deref_ref.tr(xcx)) } 2 => { let store: ty::TraitStore = - this.read_enum_variant_arg(0, |this| Decodable::decode(this)).unwrap(); + this.read_enum_variant_arg(0, ref |this| { + Decodable::decode(this) + }).unwrap(); let b: ty::BuiltinBounds = - this.read_enum_variant_arg(1, |this| Decodable::decode(this)).unwrap(); + this.read_enum_variant_arg(1, ref |this| { + Decodable::decode(this) + }).unwrap(); let def_id: ast::DefId = - this.read_enum_variant_arg(2, |this| Decodable::decode(this)).unwrap(); - let substs = this.read_enum_variant_arg(3, |this| Ok(this.read_substs(xcx))) - .unwrap(); + this.read_enum_variant_arg(2, ref |this| { + Decodable::decode(this) + }).unwrap(); + let substs = + this.read_enum_variant_arg(3, ref |this| { + Ok(this.read_substs(xcx)) + }).unwrap(); ty::AutoObject(store.tr(xcx), b, def_id.tr(xcx), substs) } @@ -1495,7 +1529,7 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { fn read_unboxed_closure(&mut self, xcx: &ExtendedDecodeContext) -> ty::UnboxedClosure { - let closure_type = self.read_opaque(|this, doc| { + let closure_type = self.read_opaque(ref |this, doc| { Ok(tydecode::parse_ty_closure_data( doc.data, xcx.dcx.cdata.cnum, @@ -1508,7 +1542,7 @@ impl<'a> rbml_decoder_decoder_helpers for reader::Decoder<'a> { "FnMutUnboxedClosureKind", "FnOnceUnboxedClosureKind" ]; - let kind = self.read_enum_variant(variants, |_, i| { + let kind = self.read_enum_variant(variants, ref |_, i| { Ok(match i { 0 => ty::FnUnboxedClosureKind, 1 => ty::FnMutUnboxedClosureKind, @@ -1568,7 +1602,7 @@ fn decode_side_tables(xcx: &ExtendedDecodeContext, ast_doc: rbml::Doc) { let dcx = xcx.dcx; let tbl_doc = ast_doc.get(c::tag_table as uint); - reader::docs(tbl_doc, |tag, entry_doc| { + reader::docs(tbl_doc, ref |tag, entry_doc| { let id0 = entry_doc.get(c::tag_table_id as uint).as_int(); let id = xcx.tr_id(id0 as ast::NodeId); @@ -1606,7 +1640,7 @@ fn decode_side_tables(xcx: &ExtendedDecodeContext, id, item_substs); } c::tag_table_freevars => { - let fv_info = val_dsr.read_to_vec(|val_dsr| { + let fv_info = val_dsr.read_to_vec(ref |val_dsr| { Ok(val_dsr.read_freevar_entry(xcx)) }).unwrap().move_iter().collect(); dcx.tcx.freevars.borrow_mut().insert(id, fv_info); diff --git a/src/librustc/middle/borrowck/check_loans.rs b/src/librustc/middle/borrowck/check_loans.rs index a69fe6958e175..6dd658d167667 100644 --- a/src/librustc/middle/borrowck/check_loans.rs +++ b/src/librustc/middle/borrowck/check_loans.rs @@ -262,7 +262,7 @@ impl<'a> CheckLoanCtxt<'a> { // let y = a; // Conflicts with restriction let loan_path = owned_ptr_base_path(loan_path); - let cont = self.each_in_scope_loan(scope_id, |loan| { + let cont = self.each_in_scope_loan(scope_id, ref |loan| { let mut ret = true; for restr_path in loan.restricted_paths.iter() { if **restr_path == *loan_path { @@ -302,7 +302,7 @@ impl<'a> CheckLoanCtxt<'a> { } } - let cont = self.each_in_scope_loan(scope_id, |loan| { + let cont = self.each_in_scope_loan(scope_id, ref |loan| { if *loan.loan_path == *loan_path { op(loan) } else { @@ -323,7 +323,7 @@ impl<'a> CheckLoanCtxt<'a> { //! we encounter `scope_id`. let mut result = Vec::new(); - self.dfcx_loans.each_gen_bit(scope_id, |loan_index| { + self.dfcx_loans.each_gen_bit(scope_id, ref |loan_index| { result.push(loan_index); true }); @@ -341,7 +341,7 @@ impl<'a> CheckLoanCtxt<'a> { let new_loan_indices = self.loans_generated_by(scope_id); debug!("new_loan_indices = {:?}", new_loan_indices); - self.each_issued_loan(scope_id, |issued_loan| { + self.each_issued_loan(scope_id, ref |issued_loan| { for &new_loan_index in new_loan_indices.iter() { let new_loan = &self.all_loans[new_loan_index]; self.report_error_if_loans_conflict(issued_loan, new_loan); @@ -626,7 +626,7 @@ impl<'a> CheckLoanCtxt<'a> { let mut ret = UseOk; - self.each_in_scope_loan_affecting_path(expr_id, use_path, |loan| { + self.each_in_scope_loan_affecting_path(expr_id, use_path, ref |loan| { if !compatible_borrow_kinds(loan.kind, borrow_kind) { ret = UseWhileBorrowed(loan.loan_path.clone(), loan.span); false @@ -733,7 +733,9 @@ impl<'a> CheckLoanCtxt<'a> { if self.is_local_variable_or_arg(assignee_cmt.clone()) { assert!(assignee_cmt.mutbl.is_immutable()); // no "const" locals let lp = opt_loan_path(&assignee_cmt).unwrap(); - self.move_data.each_assignment_of(assignment_id, &lp, |assign| { + self.move_data.each_assignment_of(assignment_id, + &lp, + ref |assign| { self.bccx.report_reassigned_immutable_variable( assignment_span, &*lp, @@ -869,7 +871,9 @@ impl<'a> CheckLoanCtxt<'a> { None => { return; /* no loan path, can't be any loans */ } }; - this.each_in_scope_loan_affecting_path(assignment_id, &*loan_path, |loan| { + this.each_in_scope_loan_affecting_path(assignment_id, + &*loan_path, + ref |loan| { this.report_illegal_mutation(assignment_span, &*loan_path, loan); false }); diff --git a/src/librustc/middle/borrowck/graphviz.rs b/src/librustc/middle/borrowck/graphviz.rs index b19d01187281a..ff73d207ea7e9 100644 --- a/src/librustc/middle/borrowck/graphviz.rs +++ b/src/librustc/middle/borrowck/graphviz.rs @@ -81,7 +81,7 @@ impl<'a> DataflowLabeller<'a> { to_lp: |uint| -> Rc) -> String { let mut saw_some = false; let mut set = "{".to_string(); - dfcx.each_bit_for_node(e, cfgidx, |index| { + dfcx.each_bit_for_node(e, cfgidx, ref |index| { let lp = to_lp(index); if saw_some { set.push_str(", "); @@ -96,7 +96,7 @@ impl<'a> DataflowLabeller<'a> { fn dataflow_loans_for(&self, e: EntryOrExit, cfgidx: CFGIndex) -> String { let dfcx = &self.analysis_data.loans; - let loan_index_to_path = |loan_index| { + let loan_index_to_path = ref |loan_index| { let all_loans = &self.analysis_data.all_loans; all_loans.get(loan_index).loan_path() }; @@ -105,7 +105,7 @@ impl<'a> DataflowLabeller<'a> { fn dataflow_moves_for(&self, e: EntryOrExit, cfgidx: CFGIndex) -> String { let dfcx = &self.analysis_data.move_data.dfcx_moves; - let move_index_to_path = |move_index| { + let move_index_to_path = ref |move_index| { let move_data = &self.analysis_data.move_data.move_data; let moves = move_data.moves.borrow(); let move = moves.get(move_index); @@ -116,7 +116,7 @@ impl<'a> DataflowLabeller<'a> { fn dataflow_assigns_for(&self, e: EntryOrExit, cfgidx: CFGIndex) -> String { let dfcx = &self.analysis_data.move_data.dfcx_assign; - let assign_index_to_path = |assign_index| { + let assign_index_to_path = ref |assign_index| { let move_data = &self.analysis_data.move_data.move_data; let assignments = move_data.var_assignments.borrow(); let assignment = assignments.get(assign_index); diff --git a/src/librustc/middle/borrowck/move_data.rs b/src/librustc/middle/borrowck/move_data.rs index 340056875f2b9..f5900ea9bc031 100644 --- a/src/librustc/middle/borrowck/move_data.rs +++ b/src/librustc/middle/borrowck/move_data.rs @@ -485,7 +485,7 @@ impl MoveData { let mut p = self.path_first_child(index); while p != InvalidMovePathIndex { - if !self.each_extending_path(p, |x| f(x)) { + if !self.each_extending_path(p, ref |x| f(x)) { return false; } p = self.path_next_sibling(p); @@ -499,7 +499,7 @@ impl MoveData { f: |MoveIndex| -> bool) -> bool { let mut ret = true; - self.each_extending_path(index0, |index| { + self.each_extending_path(index0, ref |index| { let mut p = self.path_first_move(index); while p != InvalidMoveIndex { if !f(p) { @@ -591,8 +591,11 @@ impl<'a> FlowedMoveData<'a> { //! Returns the kind of a move of `loan_path` by `id`, if one exists. let mut ret = None; - for loan_path_index in self.move_data.path_map.borrow().find(&*loan_path).iter() { - self.dfcx_moves.each_gen_bit(id, |move_index| { + for loan_path_index in self.move_data + .path_map + .borrow() + .find(&*loan_path).iter() { + self.dfcx_moves.each_gen_bit(id, ref |move_index| { let move = self.move_data.moves.borrow(); let move = move.get(move_index); if move.path == **loan_path_index { @@ -637,7 +640,7 @@ impl<'a> FlowedMoveData<'a> { let mut ret = true; - self.dfcx_moves.each_bit_on_entry(id, |index| { + self.dfcx_moves.each_bit_on_entry(id, ref |index| { let move = self.move_data.moves.borrow(); let move = move.get(index); let moved_path = move.path; @@ -649,7 +652,8 @@ impl<'a> FlowedMoveData<'a> { } } else { for &loan_path_index in opt_loan_path_index.iter() { - let cont = self.move_data.each_base_path(moved_path, |p| { + let cont = self.move_data.each_base_path(moved_path, + ref |p| { if p == loan_path_index { // Scenario 3: some extension of `loan_path` // was moved @@ -693,7 +697,7 @@ impl<'a> FlowedMoveData<'a> { } }; - self.dfcx_assign.each_bit_on_entry(id, |index| { + self.dfcx_assign.each_bit_on_entry(id, ref |index| { let assignment = self.move_data.var_assignments.borrow(); let assignment = assignment.get(index); if assignment.path == loan_path_index && !f(assignment) { diff --git a/src/librustc/middle/cfg/graphviz.rs b/src/librustc/middle/cfg/graphviz.rs index 0cccae8b8c9cd..08da7fc46b2ea 100644 --- a/src/librustc/middle/cfg/graphviz.rs +++ b/src/librustc/middle/cfg/graphviz.rs @@ -94,7 +94,7 @@ impl<'a> dot::Labeller<'a, Node<'a>, Edge<'a>> for LabelledCFG<'a> { impl<'a> dot::GraphWalk<'a, Node<'a>, Edge<'a>> for &'a cfg::CFG { fn nodes(&self) -> dot::Nodes<'a, Node<'a>> { let mut v = Vec::new(); - self.graph.each_node(|i, nd| { v.push((i, nd)); true }); + self.graph.each_node(ref |i, nd| { v.push((i, nd)); true }); dot::maybe_owned_vec::Growable(v) } fn edges(&self) -> dot::Edges<'a, Edge<'a>> { diff --git a/src/librustc/middle/check_const.rs b/src/librustc/middle/check_const.rs index 283d667f3a803..d8ac7ba750e52 100644 --- a/src/librustc/middle/check_const.rs +++ b/src/librustc/middle/check_const.rs @@ -146,9 +146,13 @@ fn check_expr(v: &mut CheckCrateVisitor, e: &Expr, is_const: bool) { ExprBlock(ref block) => { // Check all statements in the block for stmt in block.stmts.iter() { - let block_span_err = |span| - span_err!(v.tcx.sess, span, E0016, - "blocks in constants are limited to items and tail expressions"); + let block_span_err = ref |span| { + span_err!(v.tcx.sess, + span, + E0016, + "blocks in constants are limited to items and \ + tail expressions") + }; match stmt.node { StmtDecl(ref span, _) => { match span.node { diff --git a/src/librustc/middle/check_match.rs b/src/librustc/middle/check_match.rs index 230668e706653..7bd532f837eea 100644 --- a/src/librustc/middle/check_match.rs +++ b/src/librustc/middle/check_match.rs @@ -59,7 +59,7 @@ impl fmt::Show for Matrix { let column_count = m.iter().map(|row| row.len()).max().unwrap_or(0u); assert!(m.iter().all(|row| row.len() == column_count)); - let column_widths: Vec = range(0, column_count).map(|col| { + let column_widths: Vec = range(0, column_count).map(ref |col| { pretty_printed_matrix.iter().map(|row| row.get(col).len()).max().unwrap_or(0u) }).collect(); @@ -162,7 +162,7 @@ fn check_expr(cx: &mut MatchCheckCtxt, ex: &Expr) { let mut static_inliner = StaticInliner::new(cx.tcx); let inlined_arms = arms .iter() - .map(|arm| Arm { + .map(ref |arm| Arm { pats: arm.pats.iter().map(|pat| { static_inliner.fold_pat(*pat) }).collect(), @@ -574,7 +574,7 @@ fn is_useful(cx: &MatchCheckCtxt, fn is_useful_specialized(cx: &MatchCheckCtxt, &Matrix(ref m): &Matrix, v: &[Gc], ctor: Constructor, lty: ty::t, witness: WitnessPreference) -> Usefulness { let arity = constructor_arity(cx, &ctor, lty); - let matrix = Matrix(m.iter().filter_map(|r| { + let matrix = Matrix(m.iter().filter_map(ref |r| { specialize(cx, r.as_slice(), &ctor, 0u, arity) }).collect()); match specialize(cx, v, &ctor, 0u, arity) { @@ -906,7 +906,7 @@ fn check_legality_of_move_bindings(cx: &MatchCheckCtxt, let def_map = &tcx.def_map; let mut by_ref_span = None; for pat in pats.iter() { - pat_bindings(def_map, &**pat, |bm, _, span, _path| { + pat_bindings(def_map, &**pat, ref |bm, _, span, _path| { match bm { BindByRef(_) => { by_ref_span = Some(span); @@ -933,7 +933,7 @@ fn check_legality_of_move_bindings(cx: &MatchCheckCtxt, }; for pat in pats.iter() { - walk_pat(&**pat, |p| { + walk_pat(&**pat, ref |p| { if pat_is_binding(def_map, &*p) { match p.node { PatIdent(BindByValue(_), _, sub) => { diff --git a/src/librustc/middle/const_eval.rs b/src/librustc/middle/const_eval.rs index 3c9fb1f76240c..3c915679d71f9 100644 --- a/src/librustc/middle/const_eval.rs +++ b/src/librustc/middle/const_eval.rs @@ -204,7 +204,7 @@ impl<'a> ConstEvalVisitor<'a> { ast::ExprTup(ref es) | ast::ExprVec(ref es) => - join_all(es.iter().map(|e| self.classify(&**e))), + join_all(es.iter().map(ref |e| self.classify(&**e))), ast::ExprVstore(ref e, vstore) => { match vstore { @@ -215,7 +215,7 @@ impl<'a> ConstEvalVisitor<'a> { } ast::ExprStruct(_, ref fs, None) => { - let cs = fs.iter().map(|f| self.classify(&*f.expr)); + let cs = fs.iter().map(ref |f| self.classify(&*f.expr)); join_all(cs) } diff --git a/src/librustc/middle/dataflow.rs b/src/librustc/middle/dataflow.rs index 7c5b001354dbb..72d14dd189566 100644 --- a/src/librustc/middle/dataflow.rs +++ b/src/librustc/middle/dataflow.rs @@ -152,7 +152,7 @@ fn build_nodeid_to_index(decl: Option<&ast::FnDecl>, Some(decl) => add_entries_from_fn_decl(&mut index, decl, cfg.entry) } - cfg.graph.each_node(|node_idx, node| { + cfg.graph.each_node(ref |node_idx, node| { if node.data.id != ast::DUMMY_NODE_ID { index.insert(node.data.id, node_idx); } diff --git a/src/librustc/middle/dead.rs b/src/librustc/middle/dead.rs index 9a7bfb0e6dca2..a8b02d76ec37e 100644 --- a/src/librustc/middle/dead.rs +++ b/src/librustc/middle/dead.rs @@ -195,11 +195,18 @@ impl<'a> MarkSymbolVisitor<'a> { ast_map::NodeItem(item) => { match item.node { ast::ItemStruct(..) => { - let has_extern_repr = item.attrs.iter().fold(attr::ReprAny, |acc, attr| { - attr::find_repr_attr(self.tcx.sess.diagnostic(), attr, acc) + let has_extern_repr = item.attrs + .iter() + .fold(attr::ReprAny, + ref |acc, attr| { + attr::find_repr_attr(self.tcx.sess.diagnostic(), + attr, + acc) }) == attr::ReprExtern; - visit::walk_item(self, &*item, MarkSymbolVisitorContext { + visit::walk_item(self, + &*item, + MarkSymbolVisitorContext { struct_has_extern_repr: has_extern_repr, ..(ctxt) }); @@ -449,7 +456,7 @@ impl<'a> DeadVisitor<'a> { ctor_id: Option) -> bool { if self.live_symbols.contains(&id) || ctor_id.map_or(false, - |ctor| self.live_symbols.contains(&ctor)) { + ref |ctor| self.live_symbols.contains(&ctor)) { return true; } // If it's a type whose methods are live, then it's live, too. diff --git a/src/librustc/middle/dependency_format.rs b/src/librustc/middle/dependency_format.rs index 38e4426e4c878..5ee05c9ae1561 100644 --- a/src/librustc/middle/dependency_format.rs +++ b/src/librustc/middle/dependency_format.rs @@ -132,7 +132,7 @@ fn calculate_type(sess: &session::Session, // Sweep all crates for found dylibs. Add all dylibs, as well as their // dependencies, ensuring there are no conflicts. The only valid case for a // dependency to be relied upon twice is for both cases to rely on a dylib. - sess.cstore.iter_crate_data(|cnum, data| { + sess.cstore.iter_crate_data(ref |cnum, data| { let src = sess.cstore.get_used_crate_source(cnum).unwrap(); if src.dylib.is_some() { add_library(sess, cnum, cstore::RequireDynamic, &mut formats); @@ -147,7 +147,7 @@ fn calculate_type(sess: &session::Session, }); // Collect what we've got so far in the return vector. - let mut ret = range(1, sess.cstore.next_crate_num()).map(|i| { + let mut ret = range(1, sess.cstore.next_crate_num()).map(ref |i| { match formats.find(&i).map(|v| *v) { v @ Some(cstore::RequireDynamic) => v, _ => None, @@ -156,7 +156,7 @@ fn calculate_type(sess: &session::Session, // Run through the dependency list again, and add any missing libraries as // static libraries. - sess.cstore.iter_crate_data(|cnum, data| { + sess.cstore.iter_crate_data(ref |cnum, data| { let src = sess.cstore.get_used_crate_source(cnum).unwrap(); if src.dylib.is_none() && !formats.contains_key(&cnum) { assert!(src.rlib.is_some()); @@ -223,8 +223,9 @@ fn add_library(sess: &session::Session, fn attempt_static(sess: &session::Session) -> Option { let crates = sess.cstore.get_used_crates(cstore::RequireStatic); - if crates.iter().all(|&(_, ref p)| p.is_some()) { - Some(crates.move_iter().map(|_| Some(cstore::RequireStatic)).collect()) + if crates.iter().all(ref |&(_, ref p)| p.is_some()) { + Some(crates.move_iter() + .map(ref |_| Some(cstore::RequireStatic)).collect()) } else { None } diff --git a/src/librustc/middle/entry.rs b/src/librustc/middle/entry.rs index 3debdc158fe26..2b8e294dd96fc 100644 --- a/src/librustc/middle/entry.rs +++ b/src/librustc/middle/entry.rs @@ -81,7 +81,7 @@ fn find_item(item: &Item, ctxt: &mut EntryContext) { match item.node { ItemFn(..) => { if item.ident.name == ctxt.main_name { - ctxt.ast_map.with_path(item.id, |mut path| { + ctxt.ast_map.with_path(item.id, ref |mut path| { if path.count() == 1 { // This is a top-level function so can be 'main' if ctxt.main_fn.is_none() { diff --git a/src/librustc/middle/freevars.rs b/src/librustc/middle/freevars.rs index 1a2d21baa210a..3aaac7822280b 100644 --- a/src/librustc/middle/freevars.rs +++ b/src/librustc/middle/freevars.rs @@ -63,14 +63,11 @@ impl<'a> Visitor for CollectFreevarsVisitor<'a> { self.capture_mode_map.insert(expr.id, CaptureByValue); visit::walk_expr(self, expr, depth + 1) } - ast::ExprFnBlock(_, _, _) => { - // NOTE(stage0): After snapshot, change to: - // - //let capture_mode = match capture_clause { - // ast::CaptureByValue => CaptureByValue, - // ast::CaptureByRef => CaptureByRef, - //}; - let capture_mode = CaptureByRef; + ast::ExprFnBlock(capture_clause, _, _) => { + let capture_mode = match capture_clause { + ast::CaptureByValue => CaptureByValue, + ast::CaptureByRef => CaptureByRef, + }; self.capture_mode_map.insert(expr.id, capture_mode); visit::walk_expr(self, expr, depth + 1) } diff --git a/src/librustc/middle/graph.rs b/src/librustc/middle/graph.rs index 78eeb26997d51..b50e37755816a 100644 --- a/src/librustc/middle/graph.rs +++ b/src/librustc/middle/graph.rs @@ -338,7 +338,7 @@ mod test { fn each_node() { let graph = create_graph(); let expected = ["A", "B", "C", "D", "E", "F"]; - graph.each_node(|idx, node| { + graph.each_node(ref |idx, node| { assert_eq!(&expected[idx.get()], graph.node_data(idx)); assert_eq!(expected[idx.get()], node.data); true @@ -349,7 +349,7 @@ mod test { fn each_edge() { let graph = create_graph(); let expected = ["AB", "BC", "BD", "DE", "EC", "FB"]; - graph.each_edge(|idx, edge| { + graph.each_edge(ref |idx, edge| { assert_eq!(&expected[idx.get()], graph.edge_data(idx)); assert_eq!(expected[idx.get()], edge.data); true @@ -364,7 +364,7 @@ mod test { assert!(graph.node_data(start_index) == &start_data); let mut counter = 0; - graph.each_incoming_edge(start_index, |edge_index, edge| { + graph.each_incoming_edge(start_index, ref |edge_index, edge| { assert!(graph.edge_data(edge_index) == &edge.data); assert!(counter < expected_incoming.len()); debug!("counter={:?} expected={:?} edge_index={:?} edge={:?}", @@ -382,7 +382,7 @@ mod test { assert_eq!(counter, expected_incoming.len()); let mut counter = 0; - graph.each_outgoing_edge(start_index, |edge_index, edge| { + graph.each_outgoing_edge(start_index, ref |edge_index, edge| { assert!(graph.edge_data(edge_index) == &edge.data); assert!(counter < expected_outgoing.len()); debug!("counter={:?} expected={:?} edge_index={:?} edge={:?}", diff --git a/src/librustc/middle/intrinsicck.rs b/src/librustc/middle/intrinsicck.rs index 6669147b0dcac..e48440dfe4cd3 100644 --- a/src/librustc/middle/intrinsicck.rs +++ b/src/librustc/middle/intrinsicck.rs @@ -26,7 +26,7 @@ use syntax::visit; fn type_size_is_affected_by_type_parameters(tcx: &ty::ctxt, typ: ty::t) -> bool { let mut result = false; - ty::maybe_walk_ty(typ, |typ| { + ty::maybe_walk_ty(typ, ref |typ| { match ty::get(typ).sty { ty::ty_box(_) | ty::ty_uniq(_) | ty::ty_ptr(_) | ty::ty_rptr(..) | ty::ty_bare_fn(..) | ty::ty_closure(..) => { diff --git a/src/librustc/middle/kind.rs b/src/librustc/middle/kind.rs index dbd7d6a5d6ac4..bdb3895b5c3ca 100644 --- a/src/librustc/middle/kind.rs +++ b/src/librustc/middle/kind.rs @@ -144,7 +144,7 @@ fn check_impl_of_trait(cx: &mut Context, it: &Item, trait_ref: &TraitRef, self_t // If this trait has builtin-kind supertraits, meet them. let self_ty: ty::t = ty::node_id_to_type(cx.tcx, it.id); debug!("checking impl with self type {}", ty::get(self_ty).sty); - check_builtin_bounds(cx, self_ty, trait_def.bounds, |missing| { + check_builtin_bounds(cx, self_ty, trait_def.bounds, ref |missing| { span_err!(cx.tcx.sess, self_type.span, E0142, "the type `{}', which does not fulfill `{}`, cannot implement this trait", ty_to_string(cx.tcx, self_ty), missing.user_string(cx.tcx)); @@ -334,8 +334,8 @@ fn check_fn( fn_id: NodeId) { // Check kinds on free variables: - with_appropriate_checker(cx, fn_id, |chk| { - freevars::with_freevars(cx.tcx, fn_id, |freevars| { + with_appropriate_checker(cx, fn_id, ref |chk| { + freevars::with_freevars(cx.tcx, fn_id, ref |freevars| { for fv in freevars.iter() { chk(cx, fv); } @@ -678,7 +678,7 @@ fn check_bounds_on_structs_or_enums_in_type_if_possible(cx: &mut Context, parameter_environment, &polytype.generics.types, substs, - |missing| { + ref |missing| { cx.tcx .sess .span_err(span, @@ -706,7 +706,7 @@ fn check_bounds_on_structs_or_enums_in_trait_ref(cx: &mut Context, pub fn check_freevar_bounds(cx: &Context, sp: Span, ty: ty::t, bounds: ty::BuiltinBounds, referenced_ty: Option) { - check_builtin_bounds(cx, ty, bounds, |missing| { + check_builtin_bounds(cx, ty, bounds, ref |missing| { // Will be Some if the freevar is implicitly borrowed (stack closure). // Emit a less mysterious error message in this case. match referenced_ty { @@ -731,7 +731,7 @@ pub fn check_freevar_bounds(cx: &Context, sp: Span, ty: ty::t, pub fn check_trait_cast_bounds(cx: &Context, sp: Span, ty: ty::t, bounds: ty::BuiltinBounds) { - check_builtin_bounds(cx, ty, bounds, |missing| { + check_builtin_bounds(cx, ty, bounds, ref |missing| { span_err!(cx.tcx.sess, sp, E0147, "cannot pack type `{}`, which does not fulfill `{}`, as a trait bounded by {}", ty_to_string(cx.tcx, ty), @@ -816,7 +816,7 @@ pub fn check_cast_for_escaping_regions( ty::walk_regions_and_ty( cx.tcx, target_ty, - |r| { + ref |r| { if !r.is_bound() { target_regions.push(r); } @@ -826,7 +826,7 @@ pub fn check_cast_for_escaping_regions( // Check, based on the region associated with the trait, whether it can // possibly escape the enclosing fn item (note that all type parameters // must have been declared on the enclosing fn item). - if target_regions.iter().any(|r| is_ReScope(*r)) { + if target_regions.iter().any(ref |r| is_ReScope(*r)) { return; /* case (1) */ } @@ -859,7 +859,8 @@ pub fn check_cast_for_escaping_regions( // Self should be exempt from this check, // except for historical accident. Bottom // line, we need proper region bounding. - } else if target_params.iter().any(|x| x == &source_param) { + } else if target_params.iter() + .any(ref |x| x == &source_param) { /* case (2) */ } else { check_static(cx.tcx, ty, source_span); /* case (3) */ diff --git a/src/librustc/middle/lang_items.rs b/src/librustc/middle/lang_items.rs index 223e518fecdf7..8ec3dd42ac423 100644 --- a/src/librustc/middle/lang_items.rs +++ b/src/librustc/middle/lang_items.rs @@ -171,8 +171,10 @@ impl<'a> LanguageItemCollector<'a> { pub fn collect_external_language_items(&mut self) { let crate_store = &self.session.cstore; - crate_store.iter_crate_data(|crate_number, _crate_metadata| { - each_lang_item(crate_store, crate_number, |node_id, item_index| { + crate_store.iter_crate_data(ref |crate_number, _crate_metadata| { + each_lang_item(crate_store, + crate_number, + ref |node_id, item_index| { let def_id = ast::DefId { krate: crate_number, node: node_id }; self.collect_item(item_index, def_id, DUMMY_SP); true diff --git a/src/librustc/middle/liveness.rs b/src/librustc/middle/liveness.rs index baac68904d553..e8fc150c95f6a 100644 --- a/src/librustc/middle/liveness.rs +++ b/src/librustc/middle/liveness.rs @@ -378,7 +378,7 @@ fn visit_fn(ir: &mut IrMaps, for arg in decl.inputs.iter() { pat_util::pat_bindings(&ir.tcx.def_map, &*arg.pat, - |_bm, arg_id, _x, path1| { + ref |_bm, arg_id, _x, path1| { debug!("adding argument {}", arg_id); let ident = path1.node; fn_maps.add_variable(Arg(arg_id, ident)); @@ -410,7 +410,9 @@ fn visit_fn(ir: &mut IrMaps, } fn visit_local(ir: &mut IrMaps, local: &Local) { - pat_util::pat_bindings(&ir.tcx.def_map, &*local.pat, |_, p_id, sp, path1| { + pat_util::pat_bindings(&ir.tcx.def_map, + &*local.pat, + ref |_, p_id, sp, path1| { debug!("adding local variable {}", p_id); let name = path1.node; ir.add_live_node_for_node(p_id, VarDefNode(sp)); @@ -424,7 +426,9 @@ fn visit_local(ir: &mut IrMaps, local: &Local) { fn visit_arm(ir: &mut IrMaps, arm: &Arm) { for pat in arm.pats.iter() { - pat_util::pat_bindings(&ir.tcx.def_map, &**pat, |bm, p_id, sp, path1| { + pat_util::pat_bindings(&ir.tcx.def_map, + &**pat, + ref |bm, p_id, sp, path1| { debug!("adding local variable {} from match with bm {:?}", p_id, bm); let name = path1.node; @@ -469,7 +473,7 @@ fn visit_expr(ir: &mut IrMaps, expr: &Expr) { // in better error messages than just pointing at the closure // construction site. let mut call_caps = Vec::new(); - freevars::with_freevars(ir.tcx, expr.id, |freevars| { + freevars::with_freevars(ir.tcx, expr.id, ref |freevars| { for fv in freevars.iter() { match moved_variable_node_id_from_def(fv.def) { Some(rv) => { @@ -492,7 +496,9 @@ fn visit_expr(ir: &mut IrMaps, expr: &Expr) { visit::walk_expr(ir, expr, ()); } ExprForLoop(ref pat, _, _, _) => { - pat_util::pat_bindings(&ir.tcx.def_map, &**pat, |bm, p_id, sp, path1| { + pat_util::pat_bindings(&ir.tcx.def_map, + &**pat, + ref |bm, p_id, sp, path1| { debug!("adding local variable {} from for loop with bm {:?}", p_id, bm); let name = path1.node; @@ -634,7 +640,7 @@ impl<'a> Liveness<'a> { fn define_bindings_in_arm_pats(&mut self, pats: &[Gc], succ: LiveNode) -> LiveNode { let mut succ = succ; - self.arm_pats_bindings(pats, |this, ln, var, _sp, _id| { + self.arm_pats_bindings(pats, ref |this, ln, var, _sp, _id| { this.init_from_succ(ln, succ); this.define(ln, var); succ = ln; @@ -778,7 +784,7 @@ impl<'a> Liveness<'a> { if ln == succ_ln { return false; } let mut changed = false; - self.indices2(ln, succ_ln, |this, idx, succ_idx| { + self.indices2(ln, succ_ln, ref |this, idx, succ_idx| { changed |= copy_if_invalid(this.users.get(succ_idx).reader, &mut this.users.get_mut(idx).reader); changed |= copy_if_invalid(this.users.get(succ_idx).writer, @@ -1192,7 +1198,10 @@ impl<'a> Liveness<'a> { } ExprInlineAsm(ref ia) => { - let succ = ia.outputs.iter().rev().fold(succ, |succ, &(_, ref expr)| { + let succ = ia.outputs + .iter() + .rev() + .fold(succ, ref |succ, &(_, ref expr)| { // see comment on lvalues in // propagate_through_lvalue_components() let succ = self.write_lvalue(&**expr, succ, ACC_WRITE); diff --git a/src/librustc/middle/mem_categorization.rs b/src/librustc/middle/mem_categorization.rs index ef1e0515156c0..f70118aac4f80 100644 --- a/src/librustc/middle/mem_categorization.rs +++ b/src/librustc/middle/mem_categorization.rs @@ -1079,7 +1079,9 @@ impl<'t,TYPER:Typer> MemCategorizationContext<'t,TYPER> { pat, downcast_cmt.clone(), subpat_ty, InteriorField(PositionalField(i))); - if_ok!(self.cat_pattern(subcmt, &**subpat, |x,y,z| op(x,y,z))); + if_ok!(self.cat_pattern(subcmt, + &**subpat, + ref |x,y,z| op(x,y,z))); } } Some(&def::DefFn(..)) | @@ -1090,13 +1092,16 @@ impl<'t,TYPER:Typer> MemCategorizationContext<'t,TYPER> { self.cat_imm_interior( pat, cmt.clone(), subpat_ty, InteriorField(PositionalField(i))); - if_ok!(self.cat_pattern(cmt_field, &**subpat, - |x,y,z| op(x,y,z))); + if_ok!(self.cat_pattern(cmt_field, + &**subpat, + ref |x,y,z| op(x,y,z))); } } Some(&def::DefStatic(..)) => { for subpat in subpats.iter() { - if_ok!(self.cat_pattern(cmt.clone(), &**subpat, |x,y,z| op(x,y,z))); + if_ok!(self.cat_pattern(cmt.clone(), + &**subpat, + ref |x,y,z| op(x,y,z))); } } _ => { @@ -1120,7 +1125,9 @@ impl<'t,TYPER:Typer> MemCategorizationContext<'t,TYPER> { for fp in field_pats.iter() { let field_ty = if_ok!(self.pat_ty(&*fp.pat)); // see (*2) let cmt_field = self.cat_field(pat, cmt.clone(), fp.ident, field_ty); - if_ok!(self.cat_pattern(cmt_field, &*fp.pat, |x,y,z| op(x,y,z))); + if_ok!(self.cat_pattern(cmt_field, + &*fp.pat, + ref |x,y,z| op(x,y,z))); } } @@ -1132,7 +1139,9 @@ impl<'t,TYPER:Typer> MemCategorizationContext<'t,TYPER> { self.cat_imm_interior( pat, cmt.clone(), subpat_ty, InteriorField(PositionalField(i))); - if_ok!(self.cat_pattern(subcmt, &**subpat, |x,y,z| op(x,y,z))); + if_ok!(self.cat_pattern(subcmt, + &**subpat, + ref |x,y,z| op(x,y,z))); } } @@ -1145,16 +1154,21 @@ impl<'t,TYPER:Typer> MemCategorizationContext<'t,TYPER> { ast::PatVec(ref before, slice, ref after) => { let elt_cmt = self.cat_index(pat, cmt, 0); for before_pat in before.iter() { - if_ok!(self.cat_pattern(elt_cmt.clone(), &**before_pat, - |x,y,z| op(x,y,z))); + if_ok!(self.cat_pattern(elt_cmt.clone(), + &**before_pat, + ref |x,y,z| op(x,y,z))); } for slice_pat in slice.iter() { let slice_ty = if_ok!(self.pat_ty(&**slice_pat)); let slice_cmt = self.cat_rvalue_node(pat.id(), pat.span(), slice_ty); - if_ok!(self.cat_pattern(slice_cmt, &**slice_pat, |x,y,z| op(x,y,z))); + if_ok!(self.cat_pattern(slice_cmt, + &**slice_pat, + ref |x,y,z| op(x,y,z))); } for after_pat in after.iter() { - if_ok!(self.cat_pattern(elt_cmt.clone(), &**after_pat, |x,y,z| op(x,y,z))); + if_ok!(self.cat_pattern(elt_cmt.clone(), + &**after_pat, + ref |x,y,z| op(x,y,z))); } } diff --git a/src/librustc/middle/pat_util.rs b/src/librustc/middle/pat_util.rs index 2d9e4ee45be95..58082c50d936c 100644 --- a/src/librustc/middle/pat_util.rs +++ b/src/librustc/middle/pat_util.rs @@ -25,7 +25,7 @@ pub type PatIdMap = HashMap; // use the NodeId of their namesake in the first pattern. pub fn pat_id_map(dm: &resolve::DefMap, pat: &Pat) -> PatIdMap { let mut map = HashMap::new(); - pat_bindings(dm, pat, |_bm, p_id, _s, path1| { + pat_bindings(dm, pat, ref |_bm, p_id, _s, path1| { map.insert(path1.node, p_id); }); map @@ -93,7 +93,7 @@ pub fn pat_bindings(dm: &resolve::DefMap, /// an ident, e.g. `foo`, or `Foo(foo)` or `foo @ Bar(..)`. pub fn pat_contains_bindings(dm: &resolve::DefMap, pat: &Pat) -> bool { let mut contains_bindings = false; - walk_pat(pat, |p| { + walk_pat(pat, ref |p| { if pat_is_binding(dm, p) { contains_bindings = true; false // there's at least one binding, can short circuit now. diff --git a/src/librustc/middle/privacy.rs b/src/librustc/middle/privacy.rs index 61e6debb08647..f2b0e7d4267eb 100644 --- a/src/librustc/middle/privacy.rs +++ b/src/librustc/middle/privacy.rs @@ -255,7 +255,7 @@ impl<'a> Visitor<()> for EmbargoVisitor<'a> { _ => true, }; let tr = ty::impl_trait_ref(self.tcx, local_def(item.id)); - let public_trait = tr.clone().map_or(false, |tr| { + let public_trait = tr.clone().map_or(false, ref |tr| { !is_local(tr.def_id) || self.exported_items.contains(&tr.def_id.node) }); @@ -686,8 +686,8 @@ impl<'a> PrivacyVisitor<'a> { fn check_path(&mut self, span: Span, path_id: ast::NodeId, path: &ast::Path) { debug!("privacy - path {}", self.nodestr(path_id)); let orig_def = self.tcx.def_map.borrow().get_copy(&path_id); - let ck = |tyname: &str| { - let ck_public = |def: ast::DefId| { + let ck = ref |tyname: &str| { + let ck_public = ref |def: ast::DefId| { let name = token::get_ident(path.segments .last() .unwrap() @@ -862,9 +862,9 @@ impl<'a> Visitor<()> for PrivacyVisitor<'a> { } } ast::ExprPath(..) => { - let guard = |did: ast::DefId| { + let guard = ref |did: ast::DefId| { let fields = ty::lookup_struct_fields(self.tcx, did); - let any_priv = fields.iter().any(|f| { + let any_priv = fields.iter().any(ref |f| { f.vis != ast::Public && ( !is_local(f.id) || !self.private_accessible(f.id.node)) @@ -1322,7 +1322,7 @@ impl<'a> Visitor<()> for VisiblePrivateTypesVisitor<'a> { // `true` iff this is `impl Private for ...`. let not_private_trait = trait_ref.as_ref().map_or(true, // no trait counts as public trait - |tr| { + ref |tr| { let did = ty::trait_ref_to_def_id(self.tcx, tr); !is_local(did) || self.trait_is_public(did.node) @@ -1339,7 +1339,7 @@ impl<'a> Visitor<()> for VisiblePrivateTypesVisitor<'a> { let trait_or_some_public_method = trait_ref.is_some() || impl_items.iter() - .any(|impl_item| { + .any(ref |impl_item| { match *impl_item { ast::MethodImplItem(m) => { self.exported_items.contains(&m.id) diff --git a/src/librustc/middle/resolve.rs b/src/librustc/middle/resolve.rs index bd779b865d695..980a40bada59c 100644 --- a/src/librustc/middle/resolve.rs +++ b/src/librustc/middle/resolve.rs @@ -1995,7 +1995,7 @@ impl<'a> Resolver<'a> { csearch::each_child_of_item(&self.session.cstore, def_id, - |def_like, child_ident, visibility| { + ref |def_like, child_ident, visibility| { debug!("(populating external module) ... found ident: {}", token::get_ident(child_ident)); self.build_reduced_graph_for_external_crate_def(module.clone(), @@ -4504,7 +4504,7 @@ impl<'a> Resolver<'a> { // user and one 'x' came from the macro. fn binding_mode_map(&mut self, pat: &Pat) -> BindingMap { let mut result = HashMap::new(); - pat_bindings(&self.def_map, pat, |binding_mode, _id, sp, path1| { + pat_bindings(&self.def_map, pat, ref |binding_mode, _id, sp, path1| { let name = mtwt::resolve(path1.node); result.insert(name, binding_info {span: sp, @@ -4686,7 +4686,7 @@ impl<'a> Resolver<'a> { } TyClosure(c, _) | TyProc(c) => { - c.bounds.as_ref().map(|bounds| { + c.bounds.as_ref().map(ref |bounds| { for bound in bounds.iter() { self.resolve_type_parameter_bound(ty.id, bound); } @@ -5528,7 +5528,11 @@ impl<'a> Resolver<'a> { } _ => { let mut method_scope = false; - self.value_ribs.borrow().iter().rev().all(|rib| { + self.value_ribs + .borrow() + .iter() + .rev() + .all(ref |rib| { let res = match *rib { Rib { bindings: _, kind: MethodRibKind(_, _) } => true, Rib { bindings: _, kind: ItemRibKind } => false, @@ -5796,7 +5800,9 @@ impl<'a> Resolver<'a> { assert!(match lp {LastImport{..} => false, _ => true}, "Import should only be used for `use` directives"); self.last_private.insert(node_id, lp); - self.def_map.borrow_mut().insert_or_update_with(node_id, def, |_, old_value| { + self.def_map + .borrow_mut() + .insert_or_update_with(node_id, def, ref |_, old_value| { // Resolve appears to "resolve" the same ID multiple // times, so here is a sanity check it at least comes to // the same conclusion! - nmatsakis diff --git a/src/librustc/middle/save/mod.rs b/src/librustc/middle/save/mod.rs index 11b16f1853379..7bb68aafd17fe 100644 --- a/src/librustc/middle/save/mod.rs +++ b/src/librustc/middle/save/mod.rs @@ -90,7 +90,7 @@ impl <'l> DxrVisitor<'l> { self.fmt.crate_str(krate.span, name); // dump info about all the external crates referenced from this crate - self.sess.cstore.iter_crate_data(|n, cmd| { + self.sess.cstore.iter_crate_data(ref |n, cmd| { self.fmt.external_crate_str(krate.span, cmd.name.as_slice(), n); }); self.fmt.recorder.record("end_external_crates\n"); @@ -774,7 +774,7 @@ impl <'l> DxrVisitor<'l> { .borrow(); Some(impl_items.get(&def_id) .iter() - .find(|mr| { + .find(ref |mr| { match **mr { ty::MethodTraitItemId(mr) => { ty::impl_or_trait_item( diff --git a/src/librustc/middle/stability.rs b/src/librustc/middle/stability.rs index e73d81d9bf597..834bbfafdcabd 100644 --- a/src/librustc/middle/stability.rs +++ b/src/librustc/middle/stability.rs @@ -89,7 +89,7 @@ impl Visitor> for Annotator { fn visit_struct_def(&mut self, s: &StructDef, _: Ident, _: &Generics, _: NodeId, parent: Option) { - s.ctor_id.map(|id| self.annotate(id, &[], parent.clone())); + s.ctor_id.map(ref |id| self.annotate(id, &[], parent.clone())); visit::walk_struct_def(self, s, parent) } diff --git a/src/librustc/middle/subst.rs b/src/librustc/middle/subst.rs index 673872103af60..9d2d9dab563eb 100644 --- a/src/librustc/middle/subst.rs +++ b/src/librustc/middle/subst.rs @@ -452,9 +452,9 @@ impl VecPerParamSpace { // Vec's, but note that the values of type_limit and self_limit // also need to be kept in sync during construction. VecPerParamSpace::new( - self.get_slice(TypeSpace).iter().map(|p| pred(p)).collect(), - self.get_slice(SelfSpace).iter().map(|p| pred(p)).collect(), - self.get_slice(FnSpace).iter().map(|p| pred(p)).collect()) + self.get_slice(TypeSpace).iter().map(ref |p| pred(p)).collect(), + self.get_slice(SelfSpace).iter().map(ref |p| pred(p)).collect(), + self.get_slice(FnSpace).iter().map(ref |p| pred(p)).collect()) } pub fn map_rev(&self, pred: |&T| -> U) -> VecPerParamSpace { @@ -467,16 +467,28 @@ impl VecPerParamSpace { * can be run to a fixed point */ - let mut fns: Vec = self.get_slice(FnSpace).iter().rev().map(|p| pred(p)).collect(); + let mut fns: Vec = self.get_slice(FnSpace) + .iter() + .rev() + .map(ref |p| pred(p)) + .collect(); // NB: Calling foo.rev().map().rev() causes the calls to map // to occur in the wrong order. This was somewhat surprising // to me, though it makes total sense. fns.reverse(); - let mut selfs: Vec = self.get_slice(SelfSpace).iter().rev().map(|p| pred(p)).collect(); + let mut selfs: Vec = self.get_slice(SelfSpace) + .iter() + .rev() + .map(ref |p| pred(p)) + .collect(); selfs.reverse(); - let mut tys: Vec = self.get_slice(TypeSpace).iter().rev().map(|p| pred(p)).collect(); + let mut tys: Vec = self.get_slice(TypeSpace) + .iter() + .rev() + .map(ref |p| pred(p)) + .collect(); tys.reverse(); VecPerParamSpace::new(tys, selfs, fns) } @@ -486,14 +498,14 @@ impl VecPerParamSpace { // one would suffice. i.e. change to use `move_iter`. let VecPerParamSpace { type_limit, self_limit, content } = self; let mut i = 0; - let (prefix, fn_vec) = content.partition(|_| { + let (prefix, fn_vec) = content.partition(ref |_| { let on_left = i < self_limit; i += 1; on_left }); let mut i = 0; - let (type_vec, self_vec) = prefix.partition(|_| { + let (type_vec, self_vec) = prefix.partition(ref |_| { let on_left = i < type_limit; i += 1; on_left diff --git a/src/librustc/middle/trans/_match.rs b/src/librustc/middle/trans/_match.rs index d8bdeb0abf6d5..4eb78221f4542 100644 --- a/src/librustc/middle/trans/_match.rs +++ b/src/librustc/middle/trans/_match.rs @@ -380,7 +380,7 @@ fn expand_nested_bindings<'a, 'b>( bcx.val_to_string(val)); let _indenter = indenter(); - m.iter().map(|br| { + m.iter().map(ref |br| { let mut bound_ptrs = br.bound_ptrs.clone(); let mut pat = *br.pats.get(col); loop { @@ -420,8 +420,8 @@ fn enter_match<'a, 'b>( bcx.val_to_string(val)); let _indenter = indenter(); - m.iter().filter_map(|br| { - e(br.pats.as_slice()).map(|pats| { + m.iter().filter_map(ref |br| { + e(br.pats.as_slice()).map(ref |pats| { let this = *br.pats.get(col); let mut bound_ptrs = br.bound_ptrs.clone(); match this.node { @@ -457,7 +457,7 @@ fn enter_default<'a, 'b>( let _indenter = indenter(); // Collect all of the matches that can match against anything. - enter_match(bcx, dm, m, col, val, |pats| { + enter_match(bcx, dm, m, col, val, ref |pats| { if pat_is_binding_or_wild(dm, &*pats[col]) { Some(Vec::from_slice(pats.slice_to(col)).append(pats.slice_from(col + 1))) } else { @@ -527,7 +527,7 @@ fn enter_opt<'a, 'b>( let mut i = 0; let tcx = bcx.tcx(); let mcx = check_match::MatchCheckCtxt { tcx: bcx.tcx() }; - enter_match(bcx, dm, m, col, val, |pats| { + enter_match(bcx, dm, m, col, val, ref |pats| { let span = pats[col].span; let specialized = match pats[col].node { ast::PatVec(ref before, slice, ref after) => { @@ -570,7 +570,10 @@ fn enter_opt<'a, 'b>( } _ => None }; - elems.map(|head| head.append(pats.slice_to(col)).append(pats.slice_from(col + 1))) + elems.map(ref |head| { + head.append(pats.slice_to(col)) + .append(pats.slice_from(col + 1)) + }) } _ => { check_match::specialize(&mcx, pats.as_slice(), &ctor, col, variant_size) @@ -587,7 +590,7 @@ fn enter_opt<'a, 'b>( fn get_options(bcx: &Block, m: &[Match], col: uint) -> Vec { let ccx = bcx.ccx(); fn add_to_set(tcx: &ty::ctxt, set: &mut Vec, val: Opt) { - if set.iter().any(|l| opt_eq(tcx, l, &val)) {return;} + if set.iter().any(ref |l| opt_eq(tcx, l, &val)) {return;} set.push(val); } // Vector comparisons are special in that since the actual @@ -659,7 +662,7 @@ fn extract_variant_args<'a>( val: ValueRef) -> ExtractedBlock<'a> { let _icx = push_ctxt("match::extract_variant_args"); - let args = Vec::from_fn(adt::num_args(repr, disr_val), |i| { + let args = Vec::from_fn(adt::num_args(repr, disr_val), ref |i| { adt::trans_field_ptr(bcx, repr, val, disr_val, i) }); @@ -694,7 +697,7 @@ fn extract_vec_elems<'a>( let vec_ty = node_id_type(bcx, pat_id); let vt = tvec::vec_types(bcx, ty::sequence_element_type(bcx.tcx(), vec_ty)); - let mut elems = Vec::from_fn(elem_count, |i| { + let mut elems = Vec::from_fn(elem_count, ref |i| { match slice { None => GEPi(bcx, base, [i]), Some(n) if i < n => GEPi(bcx, base, [i]), @@ -731,7 +734,7 @@ fn extract_vec_elems<'a>( // matches may be wildcards like _ or identifiers). macro_rules! any_pat ( ($m:expr, $col:expr, $pattern:pat) => ( - ($m).iter().any(|br| { + ($m).iter().any(ref |br| { match br.pats.get($col).node { $pattern => true, _ => false @@ -749,7 +752,7 @@ fn any_region_pat(m: &[Match], col: uint) -> bool { } fn any_irrefutable_adt_pat(bcx: &Block, m: &[Match], col: uint) -> bool { - m.iter().any(|br| { + m.iter().any(ref |br| { let pat = *br.pats.get(col); match pat.node { ast::PatTup(_) => true, @@ -948,7 +951,7 @@ fn compile_guard<'a, 'b>( bcx.to_str(), bcx.expr_to_string(guard_expr), m.repr(bcx.tcx()), - vec_map_to_string(vals, |v| bcx.val_to_string(*v))); + vec_map_to_string(vals, ref |v| bcx.val_to_string(*v))); let _indenter = indenter(); let mut bcx = insert_lllocals(bcx, &data.bindings_map, None); @@ -963,7 +966,7 @@ fn compile_guard<'a, 'b>( } } - return with_cond(bcx, Not(bcx, val), |bcx| { + return with_cond(bcx, Not(bcx, val), ref |bcx| { // Guard does not match: remove all bindings from the lllocals table for (_, &binding_info) in data.bindings_map.iter() { call_lifetime_end(bcx, binding_info.llmatch); @@ -993,7 +996,7 @@ fn compile_submatch<'a, 'b>( debug!("compile_submatch(bcx={}, m={}, vals={})", bcx.to_str(), m.repr(bcx.tcx()), - vec_map_to_string(vals, |v| bcx.val_to_string(*v))); + vec_map_to_string(vals, ref |v| bcx.val_to_string(*v))); let _indenter = indenter(); let _icx = push_ctxt("match::compile_submatch"); let mut bcx = bcx; @@ -1060,7 +1063,9 @@ fn compile_submatch_continue<'a, 'b>( // Find a real id (we're adding placeholder wildcard patterns, but // each column is guaranteed to have at least one real pattern) - let pat_id = m.iter().map(|br| br.pats.get(col).id).find(|&id| id != 0).unwrap_or(0); + let pat_id = m.iter() + .map(ref |br| br.pats.get(col).id).find(|&id| id != 0) + .unwrap_or(0); let left_ty = if pat_id == 0 { ty::mk_nil() @@ -1072,9 +1077,10 @@ fn compile_submatch_continue<'a, 'b>( let adt_vals = if any_irrefutable_adt_pat(bcx, m, col) { let repr = adt::represent_type(bcx.ccx(), left_ty); let arg_count = adt::num_args(&*repr, 0); - let field_vals: Vec = std::iter::range(0, arg_count).map(|ix| - adt::trans_field_ptr(bcx, &*repr, val, 0, ix) - ).collect(); + let field_vals: Vec = + std::iter::range(0, arg_count).map(ref |ix| { + adt::trans_field_ptr(bcx, &*repr, val, 0, ix) + }).collect(); Some(field_vals) } else if any_uniq_pat(m, col) || any_region_pat(m, col) { Some(vec!(Load(bcx, val))) @@ -1084,7 +1090,7 @@ fn compile_submatch_continue<'a, 'b>( match adt_vals { Some(field_vals) => { - let pats = enter_match(bcx, dm, m, col, val, |pats| + let pats = enter_match(bcx, dm, m, col, val, ref |pats| check_match::specialize(&mcx, pats, &check_match::Single, col, field_vals.len()) ); let vals = field_vals.append(vals_left.as_slice()); @@ -1348,7 +1354,7 @@ fn create_bindings_map(bcx: &Block, pat: Gc, let tcx = bcx.tcx(); let reassigned = is_discr_reassigned(bcx, discr, body); let mut bindings_map = HashMap::new(); - pat_bindings(&tcx.def_map, &*pat, |bm, p_id, span, path1| { + pat_bindings(&tcx.def_map, &*pat, ref |bm, p_id, span, path1| { let ident = path1.node; let variable_ty = node_id_type(bcx, p_id); let llvariable_ty = type_of::type_of(ccx, variable_ty); @@ -1416,7 +1422,7 @@ fn trans_match_inner<'a>(scope_cx: &'a Block<'a>, Infallible }; - let arm_datas: Vec = arms.iter().map(|arm| ArmData { + let arm_datas: Vec = arms.iter().map(ref |arm| ArmData { bodycx: fcx.new_id_block("case_body", arm.body.id), arm: arm, bindings_map: create_bindings_map(bcx, *arm.pats.get(0), discr_expr, &*arm.body) @@ -1425,7 +1431,7 @@ fn trans_match_inner<'a>(scope_cx: &'a Block<'a>, let mut static_inliner = StaticInliner::new(scope_cx.tcx()); let mut matches = Vec::new(); for arm_data in arm_datas.iter() { - matches.extend(arm_data.arm.pats.iter().map(|&p| Match { + matches.extend(arm_data.arm.pats.iter().map(ref |&p| Match { pats: vec![static_inliner.fold_pat(p)], data: arm_data, bound_ptrs: Vec::new(), @@ -1438,7 +1444,7 @@ fn trans_match_inner<'a>(scope_cx: &'a Block<'a>, // `_ => foo` or not. Sometimes it is important to know that in order // to decide whether moving on to the next condition or falling back // to the default arm. - let has_default = arms.last().map_or(false, |arm| { + let has_default = arms.last().map_or(false, ref |arm| { arm.pats.len() == 1 && arm.pats.last().unwrap().node == ast::PatWild(ast::PatWildSingle) }); @@ -1498,8 +1504,11 @@ pub fn store_local<'a>(bcx: &'a Block<'a>, let var_scope = cleanup::var_scope(tcx, local.id); return mk_binding_alloca( bcx, pat.id, ident, BindLocal, var_scope, (), - |(), bcx, v, _| expr::trans_into(bcx, &*init_expr, - expr::SaveIn(v))); + ref |(), bcx, v, _| { + expr::trans_into(bcx, + &*init_expr, + expr::SaveIn(v)) + }); } None => {} @@ -1529,11 +1538,19 @@ pub fn store_local<'a>(bcx: &'a Block<'a>, // create dummy memory for the variables if we have no // value to store into them immediately let tcx = bcx.tcx(); - pat_bindings(&tcx.def_map, &*pat, |_, p_id, _, path1| { + pat_bindings(&tcx.def_map, &*pat, ref |_, p_id, _, path1| { let scope = cleanup::var_scope(tcx, p_id); bcx = mk_binding_alloca( - bcx, p_id, &path1.node, BindLocal, scope, (), - |(), bcx, llval, ty| { zero_mem(bcx, llval, ty); bcx }); + bcx, + p_id, + &path1.node, + BindLocal, + scope, + (), + ref |(), bcx, llval, ty| { + zero_mem(bcx, llval, ty); + bcx + }); }); bcx } @@ -1576,7 +1593,7 @@ pub fn store_arg<'a>(mut bcx: &'a Block<'a>, } else { mk_binding_alloca( bcx, pat.id, ident, BindArgument, arg_scope, arg, - |arg, bcx, llval, _| arg.store_to(bcx, llval)) + ref |arg, bcx, llval, _| arg.store_to(bcx, llval)) } } @@ -1693,7 +1710,7 @@ fn bind_irrefutable_pat<'a>( // map. bcx = mk_binding_alloca( bcx, pat.id, &path1.node, binding_mode, cleanup_scope, (), - |(), bcx, llval, ty| { + ref |(), bcx, llval, ty| { match pat_binding_mode { ast::BindByValue(_) => { // By value binding: move the value that `val` @@ -1765,7 +1782,10 @@ fn bind_irrefutable_pat<'a>( let tcx = bcx.tcx(); let pat_ty = node_id_type(bcx, pat.id); let pat_repr = adt::represent_type(bcx.ccx(), pat_ty); - expr::with_field_tys(tcx, pat_ty, Some(pat.id), |discr, field_tys| { + expr::with_field_tys(tcx, + pat_ty, + Some(pat.id), + ref |discr, field_tys| { for f in fields.iter() { let ix = ty::field_idx_strict(tcx, f.ident.name, field_tys); let fldptr = adt::trans_field_ptr(bcx, &*pat_repr, val, @@ -1794,15 +1814,14 @@ fn bind_irrefutable_pat<'a>( ast::PatVec(ref before, ref slice, ref after) => { let extracted = extract_vec_elems( bcx, pat.id, before.len() + 1u + after.len(), - slice.map(|_| before.len()), val + slice.map(ref |_| before.len()), val ); - bcx = before - .iter().map(|v| Some(*v)) + bcx = before.iter().map(ref |v| Some(*v)) .chain(Some(*slice).move_iter()) - .chain(after.iter().map(|v| Some(*v))) + .chain(after.iter().map(ref |v| Some(*v))) .zip(extracted.vals.iter()) - .fold(bcx, |bcx, (inner, elem)| { - inner.map_or(bcx, |inner| { + .fold(bcx, ref |bcx, (inner, elem)| { + inner.map_or(bcx, ref |inner| { bind_irrefutable_pat(bcx, inner, *elem, binding_mode, cleanup_scope) }) }); diff --git a/src/librustc/middle/trans/asm.rs b/src/librustc/middle/trans/asm.rs index 9760ef07a40e4..9cff7cdb449dc 100644 --- a/src/librustc/middle/trans/asm.rs +++ b/src/librustc/middle/trans/asm.rs @@ -37,7 +37,7 @@ pub fn trans_inline_asm<'a>(bcx: &'a Block<'a>, ia: &ast::InlineAsm) let temp_scope = fcx.push_custom_cleanup_scope(); // Prepare the output operands - let outputs = ia.outputs.iter().map(|&(ref c, ref out)| { + let outputs = ia.outputs.iter().map(ref |&(ref c, ref out)| { constraints.push((*c).clone()); let out_datum = unpack_datum!(bcx, expr::trans(bcx, &**out)); @@ -47,7 +47,7 @@ pub fn trans_inline_asm<'a>(bcx: &'a Block<'a>, ia: &ast::InlineAsm) }).collect::>(); // Now the input operands - let inputs = ia.inputs.iter().map(|&(ref c, ref input)| { + let inputs = ia.inputs.iter().map(ref |&(ref c, ref input)| { constraints.push((*c).clone()); let in_datum = unpack_datum!(bcx, expr::trans(bcx, &**input)); @@ -103,8 +103,8 @@ pub fn trans_inline_asm<'a>(bcx: &'a Block<'a>, ia: &ast::InlineAsm) ast::AsmIntel => llvm::AD_Intel }; - let r = ia.asm.get().with_c_str(|a| { - constraints.as_slice().with_c_str(|c| { + let r = ia.asm.get().with_c_str(ref |a| { + constraints.as_slice().with_c_str(ref |c| { InlineAsmCall(bcx, a, c, diff --git a/src/librustc/middle/trans/base.rs b/src/librustc/middle/trans/base.rs index e3dfd4f534dbc..d2d3f6738f953 100644 --- a/src/librustc/middle/trans/base.rs +++ b/src/librustc/middle/trans/base.rs @@ -180,7 +180,7 @@ impl<'a> Drop for StatRecorder<'a> { pub fn decl_fn(ccx: &CrateContext, name: &str, cc: llvm::CallConv, ty: Type, output: ty::t) -> ValueRef { - let llfn: ValueRef = name.with_c_str(|buf| { + let llfn: ValueRef = name.with_c_str(ref |buf| { unsafe { llvm::LLVMGetOrInsertFunction(ccx.llmod, buf, ty.to_ref()) } @@ -250,7 +250,7 @@ fn get_extern_rust_fn(ccx: &CrateContext, fn_ty: ty::t, name: &str, did: ast::De let f = decl_rust_fn(ccx, fn_ty, name); - csearch::get_item_attrs(&ccx.sess().cstore, did, |attrs| { + csearch::get_item_attrs(&ccx.sess().cstore, did, ref |attrs| { set_llvm_fn_attrs(attrs.as_slice(), f) }); @@ -330,7 +330,7 @@ pub fn get_extern_const(externs: &mut ExternMap, llmod: ModuleRef, None => () } unsafe { - let c = name.with_c_str(|buf| { + let c = name.with_c_str(ref |buf| { llvm::LLVMAddGlobal(llmod, ty.to_ref(), buf) }); externs.insert(name.to_string(), c); @@ -479,13 +479,13 @@ pub fn set_always_inline(f: ValueRef) { } pub fn set_split_stack(f: ValueRef) { - "split-stack".with_c_str(|buf| { + "split-stack".with_c_str(ref |buf| { unsafe { llvm::LLVMAddFunctionAttrString(f, llvm::FunctionIndex as c_uint, buf); } }) } pub fn unset_split_stack(f: ValueRef) { - "split-stack".with_c_str(|buf| { + "split-stack".with_c_str(ref |buf| { unsafe { llvm::LLVMRemoveFunctionAttrString(f, llvm::FunctionIndex as c_uint, buf); } }) } @@ -544,7 +544,7 @@ pub fn get_res_dtor(ccx: &CrateContext, // Structural comparison: a rather involved form of glue. pub fn maybe_name_value(cx: &CrateContext, v: ValueRef, s: &str) { if cx.sess().opts.cg.save_temps { - s.with_c_str(|buf| { + s.with_c_str(ref |buf| { unsafe { llvm::LLVMSetValueName(v, buf) } @@ -563,7 +563,9 @@ pub fn compare_scalar_types<'a>( t: ty::t, op: ast::BinOp) -> Result<'a> { - let f = |a| Result::new(cx, compare_scalar_values(cx, lhs, rhs, a, op)); + let f = ref |a| { + Result::new(cx, compare_scalar_values(cx, lhs, rhs, a, op)) + }; match ty::get(t).sty { ty::ty_nil => f(nil_type), @@ -715,7 +717,7 @@ pub fn iter_structural_ty<'r, match ty::get(t).sty { ty::ty_struct(..) => { let repr = adt::represent_type(cx.ccx(), t); - expr::with_field_tys(cx.tcx(), t, None, |discr, field_tys| { + expr::with_field_tys(cx.tcx(), t, None, ref |discr, field_tys| { for (i, field_ty) in field_tys.iter().enumerate() { let llfld_a = adt::trans_field_ptr(cx, &*repr, av, discr, i); cx = f(cx, llfld_a, field_ty.mt.ty); @@ -785,7 +787,7 @@ pub fn iter_structural_ty<'r, av, &**variant, substs, - |x,y,z| f(x,y,z)); + ref |x,y,z| f(x,y,z)); Br(variant_cx, next_cx.llbb); } cx = next_cx; @@ -806,15 +808,15 @@ pub fn cast_shift_expr_rhs<'a>( rhs: ValueRef) -> ValueRef { cast_shift_rhs(op, lhs, rhs, - |a,b| Trunc(cx, a, b), - |a,b| ZExt(cx, a, b)) + ref |a,b| Trunc(cx, a, b), + ref |a,b| ZExt(cx, a, b)) } pub fn cast_shift_const_rhs(op: ast::BinOp, lhs: ValueRef, rhs: ValueRef) -> ValueRef { cast_shift_rhs(op, lhs, rhs, - |a, b| unsafe { llvm::LLVMConstTrunc(a, b.to_ref()) }, - |a, b| unsafe { llvm::LLVMConstZExt(a, b.to_ref()) }) + ref |a, b| unsafe { llvm::LLVMConstTrunc(a, b.to_ref()) }, + ref |a, b| unsafe { llvm::LLVMConstZExt(a, b.to_ref()) }) } pub fn cast_shift_rhs(op: ast::BinOp, @@ -876,7 +878,7 @@ pub fn fail_if_zero_or_overflows<'a>( ty_to_string(cx.tcx(), rhs_t)).as_slice()); } }; - let bcx = with_cond(cx, is_zero, |bcx| { + let bcx = with_cond(cx, is_zero, ref |bcx| { controlflow::trans_fail(bcx, span, InternedString::new(zero_text)) }); @@ -907,10 +909,10 @@ pub fn fail_if_zero_or_overflows<'a>( }; let minus_one = ICmp(bcx, llvm::IntEQ, rhs, C_integral(llty, -1, false)); - with_cond(bcx, minus_one, |bcx| { + with_cond(bcx, minus_one, ref |bcx| { let is_min = ICmp(bcx, llvm::IntEQ, lhs, C_integral(llty, min, true)); - with_cond(bcx, is_min, |bcx| { + with_cond(bcx, is_min, ref |bcx| { controlflow::trans_fail(bcx, span, InternedString::new(overflow_text)) }) @@ -1496,7 +1498,7 @@ pub fn create_datums_for_fn_args(fcx: &FunctionContext, // Return an array wrapping the ValueRefs that we get from `get_param` for // each argument into datums. - arg_tys.iter().enumerate().map(|(i, &arg_ty)| { + arg_tys.iter().enumerate().map(ref |(i, &arg_ty)| { let llarg = get_param(fcx.llfn, fcx.arg_pos(i) as c_uint); datum::Datum::new(llarg, arg_ty, arg_kind(fcx, arg_ty)) }).collect() @@ -1535,7 +1537,7 @@ fn create_datums_for_fn_args_under_call_abi< false, tuple_args_scope_id, (), - |(), + ref |(), mut bcx, llval| { for (j, &tupled_arg_ty) in @@ -1641,7 +1643,7 @@ fn copy_unboxed_closure_args_to_allocas<'a>( let tuple_element_type = untupled_arg_types[j]; let tuple_element_datum = tuple_datum.get_element(tuple_element_type, - |llval| GEPi(bcx, llval, [0, j])); + ref |llval| GEPi(bcx, llval, [0, j])); let tuple_element_datum = tuple_element_datum.to_expr_datum(); let tuple_element_datum = unpack_datum!(bcx, @@ -1784,7 +1786,7 @@ pub fn trans_closure(ccx: &CrateContext, // Set up arguments to the function. let monomorphized_arg_types = arg_types.iter() - .map(|at| monomorphize_type(bcx, *at)) + .map(ref |at| monomorphize_type(bcx, *at)) .collect::>(); for monomorphized_arg_type in monomorphized_arg_types.iter() { debug!("trans_closure: monomorphized_arg_type: {}", @@ -1902,7 +1904,7 @@ pub fn trans_fn(ccx: &CrateContext, abi, false, NotUnboxedClosure, - |bcx, _| bcx); + ref |bcx, _| bcx); } pub fn trans_enum_variant(ccx: &CrateContext, @@ -2058,7 +2060,7 @@ fn enum_variant_size_lint(ccx: &CrateContext, enum_def: &ast::EnumDef, sp: Span, } let (largest, slargest, largest_index) = sizes.iter().enumerate().fold((0, 0, 0), - |(l, s, li), (idx, &size)| + ref |(l, s, li), (idx, &size)| if size > l { (size, l, idx) } else if size > s { @@ -2315,7 +2317,10 @@ pub fn get_fn_llvm_attributes(ccx: &CrateContext, fn_ty: ty::t) } } - for (idx, &t) in fn_sig.inputs.iter().enumerate().map(|(i, v)| (i + first_arg_offset, v)) { + for (idx, &t) in fn_sig.inputs + .iter() + .enumerate() + .map(ref |(i, v)| (i + first_arg_offset, v)) { match ty::get(t).sty { // this needs to be first to prevent fat pointers from falling through _ if !type_is_immediate(ccx, t) => { @@ -2453,7 +2458,7 @@ pub fn create_entry_wrapper(ccx: &CrateContext, unsafe { llvm::LLVMRustSetDLLExportStorageClass(llfn) } } - let llbb = "top".with_c_str(|buf| { + let llbb = "top".with_c_str(ref |buf| { unsafe { llvm::LLVMAppendBasicBlockInContext(ccx.llcx, llfn, buf) } @@ -2476,7 +2481,7 @@ pub fn create_entry_wrapper(ccx: &CrateContext, }; let args = { - let opaque_rust_main = "rust_main".with_c_str(|buf| { + let opaque_rust_main = "rust_main".with_c_str(ref |buf| { llvm::LLVMBuildPointerCast(bld, rust_main, Type::i8p(ccx).to_ref(), buf) }); @@ -2514,7 +2519,7 @@ fn exported_name(ccx: &CrateContext, id: ast::NodeId, // Use provided name Some(name) => name.get().to_string(), - _ => ccx.tcx.map.with_path(id, |mut path| { + _ => ccx.tcx.map.with_path(id, ref |mut path| { if attr::contains_name(attrs, "no_mangle") { // Don't mangle path.last().unwrap().to_string() @@ -2572,7 +2577,7 @@ pub fn get_item_val(ccx: &CrateContext, id: ast::NodeId) -> ValueRef { unsafe { let llty = llvm::LLVMTypeOf(v); - let g = sym.as_slice().with_c_str(|buf| { + let g = sym.as_slice().with_c_str(ref |buf| { llvm::LLVMAddGlobal(ccx.llmod, llty, buf) }); @@ -2640,7 +2645,7 @@ pub fn get_item_val(ccx: &CrateContext, id: ast::NodeId) -> ValueRef { match attr::first_attr_value_str_by_name(i.attrs.as_slice(), "link_section") { Some(sect) => unsafe { - sect.get().with_c_str(|buf| { + sect.get().with_c_str(ref |buf| { llvm::LLVMSetSection(v, buf); }) }, @@ -2789,7 +2794,7 @@ pub fn crate_ctxt_to_encode_parms<'r>(cx: &'r CrateContext, ie: encoder::EncodeI pub fn write_metadata(cx: &CrateContext, krate: &ast::Crate) -> Vec { use flate; - let any_library = cx.sess().crate_types.borrow().iter().any(|ty| { + let any_library = cx.sess().crate_types.borrow().iter().any(ref |ty| { *ty != config::CrateTypeExecutable }); if !any_library { @@ -2797,7 +2802,7 @@ pub fn write_metadata(cx: &CrateContext, krate: &ast::Crate) -> Vec { } let encode_inlined_item: encoder::EncodeInlinedItem = - |ecx, rbml_w, ii| astencode::encode_inlined_item(ecx, rbml_w, ii); + ref |ecx, rbml_w, ii| astencode::encode_inlined_item(ecx, rbml_w, ii); let encode_parms = crate_ctxt_to_encode_parms(cx, encode_inlined_item); let metadata = encoder::encode_metadata(encode_parms, krate); @@ -2813,7 +2818,7 @@ pub fn write_metadata(cx: &CrateContext, krate: &ast::Crate) -> Vec { let name = format!("rust_metadata_{}_{}", cx.link_meta.crate_name, cx.link_meta.crate_hash); - let llglobal = name.with_c_str(|buf| { + let llglobal = name.with_c_str(ref |buf| { unsafe { llvm::LLVMAddGlobal(cx.metadata_llmod, val_ty(llconst).to_ref(), buf) } @@ -2821,7 +2826,7 @@ pub fn write_metadata(cx: &CrateContext, krate: &ast::Crate) -> Vec { unsafe { llvm::LLVMSetInitializer(llglobal, llconst); let name = loader::meta_section_name(cx.sess().targ_cfg.os); - name.unwrap_or("rust_metadata").with_c_str(|buf| { + name.unwrap_or("rust_metadata").with_c_str(ref |buf| { llvm::LLVMSetSection(llglobal, buf) }); } @@ -2837,7 +2842,7 @@ pub fn trans_crate(krate: ast::Crate, use std::sync::{Once, ONCE_INIT}; static mut INIT: Once = ONCE_INIT; static mut POISONED: bool = false; - INIT.doit(|| { + INIT.doit(ref || { if llvm::LLVMStartMultithreaded() != 1 { // use an extra bool to make sure that all future usage of LLVM // cannot proceed despite the Once not running more than once. @@ -2894,7 +2899,10 @@ pub fn trans_crate(krate: ast::Crate, println!("n_inlines: {}", ccx.stats.n_inlines.get()); println!("n_closures: {}", ccx.stats.n_closures.get()); println!("fn stats:"); - ccx.stats.fn_stats.borrow_mut().sort_by(|&(_, _, insns_a), &(_, _, insns_b)| { + ccx.stats + .fn_stats + .borrow_mut() + .sort_by(ref |&(_, _, insns_a), &(_, _, insns_b)| { insns_b.cmp(&insns_a) }); for tuple in ccx.stats.fn_stats.borrow().iter() { @@ -2915,16 +2923,18 @@ pub fn trans_crate(krate: ast::Crate, let link_meta = ccx.link_meta.clone(); let llmod = ccx.llmod; - let mut reachable: Vec = ccx.reachable.iter().filter_map(|id| { - ccx.item_symbols.borrow().find(id).map(|s| s.to_string()) + let mut reachable: Vec = ccx.reachable + .iter() + .filter_map(ref |id| { + ccx.item_symbols.borrow().find(id).map(ref |s| s.to_string()) }).collect(); // For the purposes of LTO, we add to the reachable set all of the upstream // reachable extern fns. These functions are all part of the public ABI of // the final product, so LTO needs to preserve them. - ccx.sess().cstore.iter_crate_data(|cnum, _| { + ccx.sess().cstore.iter_crate_data(ref |cnum, _| { let syms = csearch::get_reachable_extern_fns(&ccx.sess().cstore, cnum); - reachable.extend(syms.move_iter().map(|did| { + reachable.extend(syms.move_iter().map(ref |did| { csearch::get_symbol(&ccx.sess().cstore, did) })); }); diff --git a/src/librustc/middle/trans/build.rs b/src/librustc/middle/trans/build.rs index d2ddf3ff69662..3d2a020ee1836 100644 --- a/src/librustc/middle/trans/build.rs +++ b/src/librustc/middle/trans/build.rs @@ -30,7 +30,7 @@ pub fn terminate(cx: &Block, _: &str) { pub fn check_not_terminated(cx: &Block) { if cx.terminated.get() { - fail!("already terminated!"); + fail!("block {} already terminated!", cx.to_str()); } } @@ -122,7 +122,9 @@ pub fn Invoke(cx: &Block, terminate(cx, "Invoke"); debug!("Invoke({} with arguments ({}))", cx.val_to_string(fn_), - args.iter().map(|a| cx.val_to_string(*a)).collect::>().connect(", ")); + args.iter() + .map(ref |a| cx.val_to_string(*a)) + .collect::>().connect(", ")); B(cx).invoke(fn_, args, then, catch, attributes) } diff --git a/src/librustc/middle/trans/builder.rs b/src/librustc/middle/trans/builder.rs index b3192a405be59..6dbb155504983 100644 --- a/src/librustc/middle/trans/builder.rs +++ b/src/librustc/middle/trans/builder.rs @@ -51,7 +51,7 @@ impl<'a> Builder<'a> { .get() + 1); } if self.ccx.sess().count_llvm_insns() { - base::with_insn_ctxt(|v| { + base::with_insn_ctxt(ref |v| { let mut h = self.ccx.stats.llvm_insns.borrow_mut(); // Build version of path with cycles removed. @@ -162,7 +162,7 @@ impl<'a> Builder<'a> { debug!("Invoke {} with args ({})", self.ccx.tn.val_to_string(llfn), args.iter() - .map(|&v| self.ccx.tn.val_to_string(v)) + .map(ref |&v| self.ccx.tn.val_to_string(v)) .collect::>() .connect(", ")); @@ -428,7 +428,7 @@ impl<'a> Builder<'a> { if name.is_empty() { llvm::LLVMBuildAlloca(self.llbuilder, ty.to_ref(), noname()) } else { - name.with_c_str(|c| { + name.with_c_str(ref |c| { llvm::LLVMBuildAlloca(self.llbuilder, ty.to_ref(), c) }) } @@ -551,7 +551,9 @@ impl<'a> Builder<'a> { } self.inbounds_gep(base, small_vec.slice(0, ixs.len())) } else { - let v = ixs.iter().map(|i| C_i32(self.ccx, *i as i32)).collect::>(); + let v = ixs.iter() + .map(ref |i| C_i32(self.ccx, *i as i32)) + .collect::>(); self.count_insn("gepi"); self.inbounds_gep(base, v.as_slice()) } @@ -772,7 +774,7 @@ impl<'a> Builder<'a> { let comment_text = format!("{} {}", "#", sanitized.replace("\n", "\n\t# ")); self.count_insn("inlineasm"); - let asm = comment_text.as_slice().with_c_str(|c| { + let asm = comment_text.as_slice().with_c_str(ref |c| { unsafe { llvm::LLVMConstInlineAsm(Type::func([], &Type::void(self.ccx)).to_ref(), c, noname(), False, False) @@ -793,7 +795,7 @@ impl<'a> Builder<'a> { let alignstack = if alignstack { llvm::True } else { llvm::False }; - let argtys = inputs.iter().map(|v| { + let argtys = inputs.iter().map(ref |v| { debug!("Asm Input Type: {:?}", self.ccx.tn.val_to_string(*v)); val_ty(*v) }).collect::>(); @@ -814,7 +816,7 @@ impl<'a> Builder<'a> { debug!("Call {} with args ({})", self.ccx.tn.val_to_string(llfn), args.iter() - .map(|&v| self.ccx.tn.val_to_string(v)) + .map(ref |&v| self.ccx.tn.val_to_string(v)) .collect::>() .connect(", ")); @@ -924,7 +926,7 @@ impl<'a> Builder<'a> { let bb: BasicBlockRef = llvm::LLVMGetInsertBlock(self.llbuilder); let fn_: ValueRef = llvm::LLVMGetBasicBlockParent(bb); let m: ModuleRef = llvm::LLVMGetGlobalParent(fn_); - let t: ValueRef = "llvm.trap".with_c_str(|buf| { + let t: ValueRef = "llvm.trap".with_c_str(ref |buf| { llvm::LLVMGetNamedFunction(m, buf) }); assert!((t as int != 0)); diff --git a/src/librustc/middle/trans/callee.rs b/src/librustc/middle/trans/callee.rs index e397ee94c8a11..fa5e69fe5fbc6 100644 --- a/src/librustc/middle/trans/callee.rs +++ b/src/librustc/middle/trans/callee.rs @@ -395,7 +395,7 @@ pub fn trans_unboxing_shim(bcx: &Block, bcx = trans_call_inner(bcx, None, function_type, - |bcx, _| { + ref |bcx, _| { Callee { bcx: bcx, data: Fn(llshimmedfn), @@ -647,7 +647,7 @@ pub fn trans_call<'a>( trans_call_inner(in_cx, Some(common::expr_info(call_ex)), expr_ty(in_cx, f), - |cx, _| trans(cx, f), + ref |cx, _| trans(cx, f), args, Some(dest)).bcx } @@ -667,8 +667,11 @@ pub fn trans_method_call<'a>( bcx, Some(common::expr_info(call_ex)), monomorphize_type(bcx, method_ty), - |cx, arg_cleanup_scope| { - meth::trans_method_callee(cx, method_call, Some(rcvr), arg_cleanup_scope) + ref |cx, arg_cleanup_scope| { + meth::trans_method_callee(cx, + method_call, + Some(rcvr), + arg_cleanup_scope) }, args, Some(dest)).bcx @@ -688,7 +691,7 @@ pub fn trans_lang_call<'a>( callee::trans_call_inner(bcx, None, fty, - |bcx, _| { + ref |bcx, _| { trans_fn_ref_with_vtables_to_callee(bcx, did, 0, @@ -876,7 +879,7 @@ pub fn trans_call_inner<'a>( let mut llargs = Vec::new(); let arg_tys = match args { - ArgExprs(a) => a.iter().map(|x| expr_ty(bcx, &**x)).collect(), + ArgExprs(a) => a.iter().map(ref |x| expr_ty(bcx, &**x)).collect(), _ => fail!("expected arg exprs.") }; bcx = trans_args(bcx, @@ -969,7 +972,7 @@ fn trans_args_under_call_abi<'a>( for i in range(0, field_types.len()) { let arg_datum = tuple_lvalue_datum.get_element( *field_types.get(i), - |srcval| { + ref |srcval| { adt::trans_field_ptr(bcx, repr_ptr, srcval, 0, i) }); let arg_datum = arg_datum.to_expr_datum(); diff --git a/src/librustc/middle/trans/cleanup.rs b/src/librustc/middle/trans/cleanup.rs index cf2410f657155..807fe91757b63 100644 --- a/src/librustc/middle/trans/cleanup.rs +++ b/src/librustc/middle/trans/cleanup.rs @@ -136,7 +136,7 @@ impl<'a> CleanupMethods<'a> for FunctionContext<'a> { debug!("pop_and_trans_ast_cleanup_scope({})", self.ccx.tcx.map.node_to_string(cleanup_scope)); - assert!(self.top_scope(|s| s.kind.is_ast_with_id(cleanup_scope))); + assert!(self.top_scope(ref |s| s.kind.is_ast_with_id(cleanup_scope))); let scope = self.pop_scope(); self.trans_scope_cleanups(bcx, &scope) @@ -155,7 +155,9 @@ impl<'a> CleanupMethods<'a> for FunctionContext<'a> { debug!("pop_loop_cleanup_scope({})", self.ccx.tcx.map.node_to_string(cleanup_scope)); - assert!(self.top_scope(|s| s.kind.is_loop_with_id(cleanup_scope))); + assert!(self.top_scope(ref |s| { + s.kind.is_loop_with_id(cleanup_scope) + })); let _ = self.pop_scope(); } @@ -401,7 +403,7 @@ impl<'a> CleanupMethods<'a> for FunctionContext<'a> { * execute on failure. */ - self.scopes.borrow().iter().rev().any(|s| s.needs_invoke()) + self.scopes.borrow().iter().rev().any(ref |s| s.needs_invoke()) } fn get_landing_pad(&'a self) -> BasicBlockRef { @@ -420,7 +422,7 @@ impl<'a> CleanupMethods<'a> for FunctionContext<'a> { // Remove any scopes that do not have cleanups on failure: let mut popped_scopes = vec!(); - while !self.top_scope(|s| s.needs_invoke()) { + while !self.top_scope(ref |s| s.needs_invoke()) { debug!("top scope does not need invoke"); popped_scopes.push(self.pop_scope()); } @@ -459,7 +461,11 @@ impl<'a> CleanupHelperMethods<'a> for FunctionContext<'a> { } fn top_nonempty_cleanup_scope(&self) -> Option { - self.scopes.borrow().iter().rev().position(|s| !s.cleanups.is_empty()) + self.scopes + .borrow() + .iter() + .rev() + .position(ref |s| !s.cleanups.is_empty()) } fn is_valid_to_pop_custom_scope(&self, custom_scope: CustomScopeIndex) -> bool { @@ -497,7 +503,7 @@ impl<'a> CleanupHelperMethods<'a> for FunctionContext<'a> { fn pop_scope(&self) -> CleanupScope<'a> { debug!("popping cleanup scope {}, {} scopes remaining", - self.top_scope(|s| s.block_name("")), + self.top_scope(ref |s| s.block_name("")), self.scopes_len() - 1); self.scopes.borrow_mut().pop().unwrap() @@ -584,7 +590,7 @@ impl<'a> CleanupHelperMethods<'a> for FunctionContext<'a> { // scope for this label. If so, we can stop popping scopes // and branch to the cached label, since it contains the // cleanups for any subsequent scopes. - match self.top_scope(|s| s.cached_early_exit(label)) { + match self.top_scope(ref |s| s.cached_early_exit(label)) { Some(cleanup_block) => { prev_llbb = cleanup_block; break; @@ -639,8 +645,9 @@ impl<'a> CleanupHelperMethods<'a> for FunctionContext<'a> { while !popped_scopes.is_empty() { let mut scope = popped_scopes.pop().unwrap(); - if scope.cleanups.iter().any(|c| cleanup_is_suitable_for(*c, label)) - { + if scope.cleanups + .iter() + .any(ref |c| cleanup_is_suitable_for(*c, label)) { let name = scope.block_name("clean"); debug!("generating cleanups for {}", name); let bcx_in = self.new_block(label.is_unwind(), @@ -780,9 +787,10 @@ impl<'a> CleanupScope<'a> { fn cached_early_exit(&self, label: EarlyExitLabel) -> Option { - self.cached_early_exits.iter(). - find(|e| e.label == label). - map(|e| e.cleanup_block) + self.cached_early_exits + .iter() + .find(ref |e| e.label == label) + .map(ref |e| e.cleanup_block) } fn add_cached_early_exit(&mut self, @@ -797,7 +805,7 @@ impl<'a> CleanupScope<'a> { /*! True if this scope has cleanups that need unwinding */ self.cached_landing_pad.is_some() || - self.cleanups.iter().any(|c| c.must_unwind()) + self.cleanups.iter().any(ref |c| c.must_unwind()) } fn block_name(&self, prefix: &str) -> String { diff --git a/src/librustc/middle/trans/closure.rs b/src/librustc/middle/trans/closure.rs index 17f1b6ca52669..1f7fcfc8ecc8d 100644 --- a/src/librustc/middle/trans/closure.rs +++ b/src/librustc/middle/trans/closure.rs @@ -255,7 +255,8 @@ fn build_closure<'a>(bcx0: &'a Block<'a>, fn load_environment<'a>(bcx: &'a Block<'a>, cdata_ty: ty::t, freevars: &Vec, - store: ty::TraitStore) + store: ty::TraitStore, + capture_mode: freevars::CaptureMode) -> &'a Block<'a> { let _icx = push_ctxt("closure::load_environment"); @@ -281,12 +282,13 @@ fn load_environment<'a>(bcx: &'a Block<'a>, let mut i = 0u; for freevar in freevars.iter() { let mut upvarptr = GEPi(bcx, llcdata, [0u, i]); - match store { - ty::RegionTraitStore(..) => { upvarptr = Load(bcx, upvarptr); } - ty::UniqTraitStore => {} - } let def_id = freevar.def.def_id(); + match capture_mode { + freevars::CaptureByRef => upvarptr = Load(bcx, upvarptr), + freevars::CaptureByValue => {} + } + bcx.fcx.llupvars.borrow_mut().insert(def_id.node, upvarptr); for &env_pointer_alloca in env_pointer_alloca.iter() { debuginfo::create_captured_var_metadata( @@ -417,7 +419,13 @@ pub fn trans_expr_fn<'a>( ty::ty_fn_abi(fty), true, NotUnboxedClosure, - |bcx, _| load_environment(bcx, cdata_ty, &freevars, store)); + |bcx, _| { + load_environment(bcx, + cdata_ty, + &freevars, + store, + freevar_mode) + }); fill_fn_pair(bcx, dest_addr, llfn, llbox); bcx } diff --git a/src/librustc/middle/trans/consts.rs b/src/librustc/middle/trans/consts.rs index 07f0dbaf73fc0..2c55c8f89fae1 100644 --- a/src/librustc/middle/trans/consts.rs +++ b/src/librustc/middle/trans/consts.rs @@ -538,7 +538,7 @@ fn const_expr_unadjusted(cx: &CrateContext, e: &ast::Expr, expr::with_field_tys(tcx, ety, Some(e.id), |discr, field_tys| { let (cs, inlineable) = vec::unzip(field_tys.iter().enumerate() - .map(|(ix, &field_ty)| { + .map(ref |(ix, &field_ty)| { match fs.iter().find(|f| field_ty.ident.name == f.ident.node.name) { Some(ref f) => const_expr(cx, &*f.expr, is_local), None => { diff --git a/src/librustc/middle/trans/controlflow.rs b/src/librustc/middle/trans/controlflow.rs index 7a1864448e26b..ba8a308532f12 100644 --- a/src/librustc/middle/trans/controlflow.rs +++ b/src/librustc/middle/trans/controlflow.rs @@ -309,14 +309,14 @@ pub fn trans_for<'a>( false, option_cleanup_scope_id, (), - |(), bcx, lloption| { + ref |(), bcx, lloption| { let Result { bcx: bcx, val: _ } = callee::trans_call_inner(bcx, Some(loop_info), method_type, - |bcx, arg_cleanup_scope| { + ref |bcx, arg_cleanup_scope| { meth::trans_method_callee( bcx, method_call, diff --git a/src/librustc/middle/trans/datum.rs b/src/librustc/middle/trans/datum.rs index f69a8af9c08d3..0f3d8986937b0 100644 --- a/src/librustc/middle/trans/datum.rs +++ b/src/librustc/middle/trans/datum.rs @@ -322,7 +322,7 @@ impl Datum { ByValue => { lvalue_scratch_datum( bcx, self.ty, name, false, scope, self, - |this, bcx, llval| this.store_to(bcx, llval)) + ref |this, bcx, llval| this.store_to(bcx, llval)) } } } @@ -386,8 +386,8 @@ impl Datum { */ self.match_kind( - |d| d, - |_| bcx.sess().bug("assert_lvalue given rvalue")) + ref |d| d, + ref |_| bcx.sess().bug("assert_lvalue given rvalue")) } pub fn assert_rvalue(self, bcx: &Block) -> Datum { @@ -396,8 +396,8 @@ impl Datum { */ self.match_kind( - |_| bcx.sess().bug("assert_rvalue given lvalue"), - |r| r) + ref |_| bcx.sess().bug("assert_rvalue given lvalue"), + ref |r| r) } pub fn store_to_dest<'a>(self, @@ -425,8 +425,8 @@ impl Datum { */ self.match_kind( - |_| { /* Nothing to do, cleanup already arranged */ }, - |r| { + ref |_| { /* Nothing to do, cleanup already arranged */ }, + ref |r| { let scope = cleanup::temporary_scope(bcx.tcx(), expr_id); r.add_clean(bcx.fcx, scope); }) @@ -451,8 +451,8 @@ impl Datum { expr_id: ast::NodeId) -> DatumBlock<'a, Lvalue> { self.match_kind( - |l| DatumBlock::new(bcx, l), - |r| { + ref |l| DatumBlock::new(bcx, l), + ref |r| { let scope = cleanup::temporary_scope(bcx.tcx(), expr_id); r.to_lvalue_datum_in_scope(bcx, name, scope) }) @@ -468,7 +468,7 @@ impl Datum { */ self.match_kind( - |l| { + ref |l| { let mut bcx = bcx; match l.appropriate_rvalue_mode(bcx.ccx()) { ByRef => { @@ -483,7 +483,7 @@ impl Datum { } } }, - |r| DatumBlock::new(bcx, r)) + ref |r| DatumBlock::new(bcx, r)) } } diff --git a/src/librustc/middle/trans/debuginfo.rs b/src/librustc/middle/trans/debuginfo.rs index 28319a377fa6c..e2813bb0b57ec 100644 --- a/src/librustc/middle/trans/debuginfo.rs +++ b/src/librustc/middle/trans/debuginfo.rs @@ -1265,8 +1265,10 @@ pub fn create_function_debug_context(cx: &CrateContext, let is_local_to_unit = is_node_local_to_unit(cx, fn_ast_id); - let fn_metadata = function_name.as_slice().with_c_str(|function_name| { - linkage_name.as_slice().with_c_str(|linkage_name| { + let fn_metadata = function_name.as_slice() + .with_c_str(ref |function_name| { + linkage_name.as_slice() + .with_c_str(ref |linkage_name| { unsafe { llvm::LLVMDIBuilderCreateFunction( DIB(cx), @@ -1549,7 +1551,7 @@ fn declare_local(bcx: &Block, CapturedVariable => (0, DW_TAG_auto_variable) }; - let (var_alloca, var_metadata) = name.get().with_c_str(|name| { + let (var_alloca, var_metadata) = name.get().with_c_str(ref |name| { match variable_access { DirectVariable { alloca } => ( alloca, @@ -2352,7 +2354,9 @@ fn prepare_enum_metadata(cx: &CrateContext, codemap::DUMMY_SP); let discriminant_name = get_enum_discriminant_name(cx, enum_def_id); - let discriminant_type_metadata = discriminant_name.get().with_c_str(|name| { + let discriminant_type_metadata = + discriminant_name.get() + .with_c_str(ref |name| { unsafe { llvm::LLVMDIBuilderCreateEnumerationType( DIB(cx), @@ -3276,7 +3280,7 @@ fn populate_scope_map(cx: &CrateContext, // Push argument identifiers onto the stack so arguments integrate nicely // with variable shadowing. for &arg_pat in arg_pats.iter() { - pat_util::pat_bindings(def_map, &*arg_pat, |_, _, _, path1| { + pat_util::pat_bindings(def_map, &*arg_pat, ref |_, _, _, path1| { scope_stack.push(ScopeStackEntry { scope_metadata: fn_metadata, ident: Some(path1.node) }); }) diff --git a/src/librustc/middle/trans/expr.rs b/src/librustc/middle/trans/expr.rs index 748274b1201e5..93f5336908d27 100644 --- a/src/librustc/middle/trans/expr.rs +++ b/src/librustc/middle/trans/expr.rs @@ -455,11 +455,13 @@ fn trans_rec_field<'a>(bcx: &'a Block<'a>, let base_datum = unpack_datum!(bcx, trans_to_lvalue(bcx, base, "field")); let repr = adt::represent_type(bcx.ccx(), base_datum.ty); - with_field_tys(bcx.tcx(), base_datum.ty, None, |discr, field_tys| { + with_field_tys(bcx.tcx(), base_datum.ty, None, ref |discr, field_tys| { let ix = ty::field_idx_strict(bcx.tcx(), field.name, field_tys); let d = base_datum.get_element( field_tys[ix].mt.ty, - |srcval| adt::trans_field_ptr(bcx, &*repr, srcval, discr, ix)); + ref |srcval| { + adt::trans_field_ptr(bcx, &*repr, srcval, discr, ix) + }); DatumBlock { datum: d.to_expr_datum(), bcx: bcx } }) } @@ -481,7 +483,7 @@ fn trans_index<'a>(bcx: &'a Block<'a>, .method_map .borrow() .find(&method_call) - .map(|method| method.ty); + .map(ref |method| method.ty); let elt_datum = match method_ty { Some(method_ty) => { let base_datum = unpack_datum!(bcx, trans(bcx, base)); @@ -554,7 +556,7 @@ fn trans_index<'a>(bcx: &'a Block<'a>, expect, [bounds_check, C_bool(ccx, false)], None); - bcx = with_cond(bcx, expected, |bcx| { + bcx = with_cond(bcx, expected, ref |bcx| { controlflow::trans_fail_bounds_check(bcx, index_expr.span, ix_val, @@ -617,7 +619,7 @@ fn trans_def<'a>(bcx: &'a Block<'a>, let symbol = csearch::get_symbol( &bcx.ccx().sess().cstore, did); - let llval = symbol.as_slice().with_c_str(|buf| { + let llval = symbol.as_slice().with_c_str(ref |buf| { llvm::LLVMAddGlobal(bcx.ccx().llmod, llty.to_ref(), buf) @@ -755,7 +757,10 @@ fn trans_rvalue_dps_unadjusted<'a>(bcx: &'a Block<'a>, } ast::ExprTup(ref args) => { let numbered_fields: Vec<(uint, Gc)> = - args.iter().enumerate().map(|(i, arg)| (i, *arg)).collect(); + args.iter() + .enumerate() + .map(ref |(i, arg)| (i, *arg)) + .collect(); trans_adt(bcx, expr_ty(bcx, expr), 0, numbered_fields.as_slice(), None, dest) } ast::ExprLit(lit) => { @@ -1051,13 +1056,13 @@ fn trans_struct<'a>(bcx: &'a Block<'a>, let ty = node_id_type(bcx, id); let tcx = bcx.tcx(); - with_field_tys(tcx, ty, Some(id), |discr, field_tys| { + with_field_tys(tcx, ty, Some(id), ref |discr, field_tys| { let mut need_base = Vec::from_elem(field_tys.len(), true); - let numbered_fields = fields.iter().map(|field| { - let opt_pos = - field_tys.iter().position(|field_ty| - field_ty.ident.name == field.ident.node.name); + let numbered_fields = fields.iter().map(ref |field| { + let opt_pos = field_tys.iter().position(ref |field_ty| { + field_ty.ident.name == field.ident.node.name + }); match opt_pos { Some(i) => { *need_base.get_mut(i) = false; @@ -1081,7 +1086,7 @@ fn trans_struct<'a>(bcx: &'a Block<'a>, fields: leftovers }) } None => { - if need_base.iter().any(|b| *b) { + if need_base.iter().any(ref |b| *b) { tcx.sess.span_bug(expr_span, "missing fields and no base expr") } None @@ -1146,7 +1151,14 @@ pub fn trans_adt<'a>(mut bcx: &'a Block<'a>, let base_datum = unpack_datum!(bcx, trans_to_lvalue(bcx, &*base.expr, "base")); for &(i, t) in base.fields.iter() { let datum = base_datum.get_element( - t, |srcval| adt::trans_field_ptr(bcx, &*repr, srcval, discr, i)); + t, + ref |srcval| { + adt::trans_field_ptr(bcx, + &*repr, + srcval, + discr, + i) + }); let dest = adt::trans_field_ptr(bcx, &*repr, addr, discr, i); bcx = datum.store_to(bcx, dest); } @@ -1503,7 +1515,7 @@ fn trans_overloaded_op<'a, 'b>( callee::trans_call_inner(bcx, Some(expr_info(expr)), monomorphize_type(bcx, method_ty), - |bcx, arg_cleanup_scope| { + ref |bcx, arg_cleanup_scope| { meth::trans_method_callee(bcx, method_call, None, @@ -1533,7 +1545,7 @@ fn trans_overloaded_call<'a>( Some(expr_info(expr)), monomorphize_type(bcx, method_type), - |bcx, arg_cleanup_scope| { + ref |bcx, arg_cleanup_scope| { meth::trans_method_callee( bcx, method_call, @@ -1783,7 +1795,7 @@ fn deref_once<'a>(bcx: &'a Block<'a>, // Check for overloaded deref. let method_ty = ccx.tcx.method_map.borrow() - .find(&method_call).map(|method| method.ty); + .find(&method_call).map(ref |method| method.ty); let datum = match method_ty { Some(method_ty) => { // Overloaded. Evaluate `trans_overloaded_op`, which will diff --git a/src/librustc/middle/trans/foreign.rs b/src/librustc/middle/trans/foreign.rs index fe9b593c11c7e..6281a653efdd1 100644 --- a/src/librustc/middle/trans/foreign.rs +++ b/src/librustc/middle/trans/foreign.rs @@ -669,7 +669,7 @@ pub fn trans_rust_fn_with_foreign_abi(ccx: &CrateContext, // Array for the arguments we will pass to the rust function. let mut llrust_args = Vec::new(); let mut next_foreign_arg_counter: c_uint = 0; - let next_foreign_arg: |pad: bool| -> c_uint = |pad: bool| { + let next_foreign_arg: |pad: bool| -> c_uint = ref |pad: bool| { next_foreign_arg_counter += if pad { 2 } else { diff --git a/src/librustc/middle/trans/glue.rs b/src/librustc/middle/trans/glue.rs index 570f4d370425d..789d6379caff5 100644 --- a/src/librustc/middle/trans/glue.rs +++ b/src/librustc/middle/trans/glue.rs @@ -213,7 +213,7 @@ fn trans_struct_drop_flag<'a>(mut bcx: &'a Block<'a>, -> &'a Block<'a> { let repr = adt::represent_type(bcx.ccx(), t); let drop_flag = unpack_datum!(bcx, adt::trans_drop_flag_ptr(bcx, &*repr, v0)); - with_cond(bcx, load_ty(bcx, drop_flag.val, ty::mk_bool()), |cx| { + with_cond(bcx, load_ty(bcx, drop_flag.val, ty::mk_bool()), ref |cx| { trans_struct_drop(cx, t, v0, dtor_did, class_did, substs) }) } @@ -237,7 +237,7 @@ fn trans_struct_drop<'a>(bcx: &'a Block<'a>, ty.element_type().func_params() }; - adt::fold_variants(bcx, &*repr, v0, |variant_cx, st, value| { + adt::fold_variants(bcx, &*repr, v0, ref |variant_cx, st, value| { // Be sure to put all of the fields into a scope so we can use an invoke // instruction to call the user destructor but still call the field // destructors if the user destructor fails. @@ -279,7 +279,7 @@ fn make_drop_glue<'a>(bcx: &'a Block<'a>, v0: ValueRef, t: ty::t) -> &'a Block<' ty::ty_vec(mt, None) => { let llbox = Load(bcx, v0); let not_null = IsNotNull(bcx, llbox); - with_cond(bcx, not_null, |bcx| { + with_cond(bcx, not_null, ref |bcx| { let bcx = tvec::make_drop_glue_unboxed(bcx, llbox, mt.ty); // FIXME: #13994: the old `Box<[T]>` will not support sized deallocation trans_exchange_free(bcx, llbox, 0, 8) @@ -288,7 +288,7 @@ fn make_drop_glue<'a>(bcx: &'a Block<'a>, v0: ValueRef, t: ty::t) -> &'a Block<' ty::ty_str => { let llbox = Load(bcx, v0); let not_null = IsNotNull(bcx, llbox); - with_cond(bcx, not_null, |bcx| { + with_cond(bcx, not_null, ref |bcx| { let unit_ty = ty::sequence_element_type(bcx.tcx(), t); let bcx = tvec::make_drop_glue_unboxed(bcx, llbox, unit_ty); // FIXME: #13994: the old `Box` will not support sized deallocation @@ -298,7 +298,9 @@ fn make_drop_glue<'a>(bcx: &'a Block<'a>, v0: ValueRef, t: ty::t) -> &'a Block<' ty::ty_trait(..) => { let lluniquevalue = GEPi(bcx, v0, [0, abi::trt_field_box]); // Only drop the value when it is non-null - with_cond(bcx, IsNotNull(bcx, Load(bcx, lluniquevalue)), |bcx| { + with_cond(bcx, + IsNotNull(bcx, Load(bcx, lluniquevalue)), + ref |bcx| { let dtor_ptr = Load(bcx, GEPi(bcx, v0, [0, abi::trt_field_vtable])); let dtor = Load(bcx, dtor_ptr); Call(bcx, @@ -311,7 +313,7 @@ fn make_drop_glue<'a>(bcx: &'a Block<'a>, v0: ValueRef, t: ty::t) -> &'a Block<' _ => { let llbox = Load(bcx, v0); let not_null = IsNotNull(bcx, llbox); - with_cond(bcx, not_null, |bcx| { + with_cond(bcx, not_null, ref |bcx| { let bcx = drop_ty(bcx, llbox, content_ty); trans_exchange_free_ty(bcx, llbox, content_ty) }) @@ -339,7 +341,7 @@ fn make_drop_glue<'a>(bcx: &'a Block<'a>, v0: ValueRef, t: ty::t) -> &'a Block<' let env = Load(bcx, box_cell_v); let env_ptr_ty = Type::at_box(bcx.ccx(), Type::i8(bcx.ccx())).ptr_to(); let env = PointerCast(bcx, env, env_ptr_ty); - with_cond(bcx, IsNotNull(bcx, env), |bcx| { + with_cond(bcx, IsNotNull(bcx, env), ref |bcx| { let dtor_ptr = GEPi(bcx, env, [0u, abi::box_field_tydesc]); let dtor = Load(bcx, dtor_ptr); let cdata = GEPi(bcx, env, [0u, abi::box_field_body]); @@ -420,7 +422,7 @@ pub fn declare_tydesc(ccx: &CrateContext, t: ty::t) -> tydesc_info { let llalign = llalign_of(ccx, llty); let name = mangle_internal_name_by_type_and_seq(ccx, t, "tydesc"); debug!("+++ declare_tydesc {} {}", ppaux::ty_to_string(ccx.tcx(), t), name); - let gvar = name.as_slice().with_c_str(|buf| { + let gvar = name.as_slice().with_c_str(ref |buf| { unsafe { llvm::LLVMAddGlobal(ccx.llmod, ccx.tydesc_type().to_ref(), buf) } diff --git a/src/librustc/middle/trans/monomorphize.rs b/src/librustc/middle/trans/monomorphize.rs index e19ee035a781e..78d9c3cedef92 100644 --- a/src/librustc/middle/trans/monomorphize.rs +++ b/src/librustc/middle/trans/monomorphize.rs @@ -45,7 +45,7 @@ pub fn monomorphic_fn(ccx: &CrateContext, vtables.repr(ccx.tcx()), ref_id); - assert!(real_substs.types.all(|t| { + assert!(real_substs.types.all(ref |t| { !ty::type_needs_infer(*t) && !ty::type_has_params(*t) })); @@ -84,7 +84,7 @@ pub fn monomorphic_fn(ccx: &CrateContext, let map_node = session::expect( ccx.sess(), ccx.tcx.map.find(fn_id.node), - || { + ref || { format!("while monomorphizing {:?}, couldn't find it in \ the item map (may have attempted to monomorphize \ an item defined in a different crate?)", @@ -131,7 +131,7 @@ pub fn monomorphic_fn(ccx: &CrateContext, mono_ty.hash(&mut state); hash = format!("h{}", state.result()); - ccx.tcx.map.with_path(fn_id.node, |path| { + ccx.tcx.map.with_path(fn_id.node, ref |path| { exported_name(path, hash.as_slice()) }) }; @@ -140,7 +140,7 @@ pub fn monomorphic_fn(ccx: &CrateContext, // This shouldn't need to option dance. let mut hash_id = Some(hash_id); - let mk_lldecl = |abi: abi::Abi| { + let mk_lldecl = ref |abi: abi::Abi| { let lldecl = if abi != abi::Rust { foreign::decl_rust_fn_with_foreign_abi(ccx, mono_ty, s.as_slice()) } else { @@ -179,7 +179,9 @@ pub fn monomorphic_fn(ccx: &CrateContext, ast_map::NodeVariant(v) => { let parent = ccx.tcx.map.get_parent(fn_id.node); let tvs = ty::enum_variants(ccx.tcx(), local_def(parent)); - let this_tv = tvs.iter().find(|tv| { tv.id.node == fn_id.node}).unwrap(); + let this_tv = tvs.iter() + .find(ref |tv| tv.id.node == fn_id.node) + .unwrap(); let d = mk_lldecl(abi::Rust); set_inline_hint(d); match v.node.kind { diff --git a/src/librustc/middle/trans/reflect.rs b/src/librustc/middle/trans/reflect.rs index 2aff12c2b68c5..b8b798ef18984 100644 --- a/src/librustc/middle/trans/reflect.rs +++ b/src/librustc/middle/trans/reflect.rs @@ -299,7 +299,7 @@ impl<'a, 'b> Reflector<'a, 'b> { let opaqueptrty = ty::mk_ptr(ccx.tcx(), ty::mt { ty: opaquety, mutbl: ast::MutImmutable }); - let make_get_disr = || { + let make_get_disr = ref || { let sym = mangle_internal_name_by_path_and_seq( ast_map::Values([].iter()).chain(None), "get_disr"); @@ -334,7 +334,7 @@ impl<'a, 'b> Reflector<'a, 'b> { let enum_args = (vec!(self.c_uint(variants.len()), make_get_disr())) .append(self.c_size_and_align(t).as_slice()); - self.bracketed("enum", enum_args.as_slice(), |this| { + self.bracketed("enum", enum_args.as_slice(), ref |this| { for (i, v) in variants.iter().enumerate() { let name = token::get_ident(v.name); let variant_args = [this.c_uint(i), @@ -343,11 +343,15 @@ impl<'a, 'b> Reflector<'a, 'b> { this.c_slice(name)]; this.bracketed("enum_variant", variant_args, - |this| { + ref |this| { for (j, a) in v.args.iter().enumerate() { let bcx = this.bcx; let null = C_null(llptrty); - let ptr = adt::trans_field_ptr(bcx, &*repr, null, v.disr_val, j); + let ptr = adt::trans_field_ptr(bcx, + &*repr, + null, + v.disr_val, + j); let offset = p2i(ccx, ptr); let field_args = [this.c_uint(j), offset, diff --git a/src/librustc/middle/trans/tvec.rs b/src/librustc/middle/trans/tvec.rs index 1241a85e95cfc..993aac40fab2f 100644 --- a/src/librustc/middle/trans/tvec.rs +++ b/src/librustc/middle/trans/tvec.rs @@ -393,8 +393,11 @@ pub fn write_content<'a>( let elem = unpack_datum!(bcx, expr::trans(bcx, &**element)); assert!(!ty::type_moves_by_default(bcx.tcx(), elem.ty)); - let bcx = iter_vec_loop(bcx, lldest, vt, - C_uint(bcx.ccx(), count), |set_bcx, lleltptr, _| { + let bcx = iter_vec_loop(bcx, + lldest, + vt, + C_uint(bcx.ccx(), count), + ref |set_bcx, lleltptr, _| { elem.shallow_copy_and_take(set_bcx, lleltptr) }); diff --git a/src/librustc/middle/ty.rs b/src/librustc/middle/ty.rs index ae96937757f0e..a562568c76eed 100644 --- a/src/librustc/middle/ty.rs +++ b/src/librustc/middle/ty.rs @@ -1636,16 +1636,18 @@ pub fn maybe_walk_ty(ty: t, f: |t| -> bool) { ty_enum(_, ref substs) | ty_struct(_, ref substs) | ty_trait(box TyTrait { ref substs, .. }) => { for subty in (*substs).types.iter() { - maybe_walk_ty(*subty, |x| f(x)); + maybe_walk_ty(*subty, ref |x| f(x)); } } - ty_tup(ref ts) => { for tt in ts.iter() { maybe_walk_ty(*tt, |x| f(x)); } } + ty_tup(ref ts) => { + for tt in ts.iter() { maybe_walk_ty(*tt, ref |x| f(x)); } + } ty_bare_fn(ref ft) => { - for a in ft.sig.inputs.iter() { maybe_walk_ty(*a, |x| f(x)); } + for a in ft.sig.inputs.iter() { maybe_walk_ty(*a, ref |x| f(x)); } maybe_walk_ty(ft.sig.output, f); } ty_closure(ref ft) => { - for a in ft.sig.inputs.iter() { maybe_walk_ty(*a, |x| f(x)); } + for a in ft.sig.inputs.iter() { maybe_walk_ty(*a, ref |x| f(x)); } maybe_walk_ty(ft.sig.output, f); } } @@ -1870,7 +1872,7 @@ fn type_needs_unwind_cleanup_(cx: &ctxt, ty: t, let mut encountered_box = encountered_box; let mut needs_unwind_cleanup = false; - maybe_walk_ty(ty, |ty| { + maybe_walk_ty(ty, ref |ty| { let old_encountered_box = encountered_box; let result = match get(ty).sty { ty_box(_) => { @@ -2243,7 +2245,7 @@ pub fn type_contents(cx: &ctxt, ty: t) -> TypeContents { let flds = struct_fields(cx, did, substs); let mut res = TypeContents::union(flds.as_slice(), - |f| tc_mt(cx, f.mt, cache)); + ref |f| tc_mt(cx, f.mt, cache)); if ty::has_dtor(cx, did) { res = res | TC::OwnsDtor; } @@ -2255,21 +2257,21 @@ pub fn type_contents(cx: &ctxt, ty: t) -> TypeContents { // unboxed closure. let upvars = unboxed_closure_upvars(cx, did); TypeContents::union(upvars.as_slice(), - |f| tc_ty(cx, f.ty, cache)) | + ref |f| tc_ty(cx, f.ty, cache)) | borrowed_contents(r, MutMutable) } ty_tup(ref tys) => { TypeContents::union(tys.as_slice(), - |ty| tc_ty(cx, *ty, cache)) + ref |ty| tc_ty(cx, *ty, cache)) } ty_enum(did, ref substs) => { let variants = substd_enum_variants(cx, did, substs); let mut res = - TypeContents::union(variants.as_slice(), |variant| { + TypeContents::union(variants.as_slice(), ref |variant| { TypeContents::union(variant.args.as_slice(), - |arg_ty| { + ref |arg_ty| { tc_ty(cx, *arg_ty, cache) }) }); @@ -2391,7 +2393,7 @@ pub fn type_contents(cx: &ctxt, ty: t) -> TypeContents { -> TypeContents { let _i = indenter(); let mut tc = TC::All; - each_inherited_builtin_bound(cx, bounds, traits, |bound| { + each_inherited_builtin_bound(cx, bounds, traits, ref |bound| { tc = tc - match bound { BoundStatic => TC::Nonstatic, BoundSend => TC::Nonsendable, @@ -2498,18 +2500,21 @@ pub fn is_instantiable(cx: &ctxt, r_ty: t) -> bool { ty_struct(did, ref substs) => { seen.push(did); let fields = struct_fields(cx, did, substs); - let r = fields.iter().any(|f| type_requires(cx, seen, r_ty, f.mt.ty)); + let r = fields.iter() + .any(ref |f| { + type_requires(cx, seen, r_ty, f.mt.ty) + }); seen.pop().unwrap(); r } ty_unboxed_closure(did, _) => { let upvars = unboxed_closure_upvars(cx, did); - upvars.iter().any(|f| type_requires(cx, seen, r_ty, f.ty)) + upvars.iter().any(ref |f| type_requires(cx, seen, r_ty, f.ty)) } ty_tup(ref ts) => { - ts.iter().any(|t| type_requires(cx, seen, r_ty, *t)) + ts.iter().any(ref |t| type_requires(cx, seen, r_ty, *t)) } ty_enum(ref did, _) if seen.contains(did) => { @@ -2519,8 +2524,8 @@ pub fn is_instantiable(cx: &ctxt, r_ty: t) -> bool { ty_enum(did, ref substs) => { seen.push(did); let vs = enum_variants(cx, did); - let r = !vs.is_empty() && vs.iter().all(|variant| { - variant.args.iter().any(|aty| { + let r = !vs.is_empty() && vs.iter().all(ref |variant| { + variant.args.iter().any(ref |aty| { let sty = aty.subst(cx, substs); type_requires(cx, seen, r_ty, sty) }) @@ -3435,13 +3440,13 @@ pub fn field_idx_strict(tcx: &ctxt, name: ast::Name, fields: &[field]) "no field named `{}` found in the list of fields `{:?}`", token::get_name(name), fields.iter() - .map(|f| token::get_ident(f.ident).get().to_string()) + .map(ref |f| token::get_ident(f.ident).get().to_string()) .collect::>()).as_slice()); } pub fn impl_or_trait_item_idx(id: ast::Ident, trait_items: &[ImplOrTraitItem]) -> Option { - trait_items.iter().position(|m| m.ident() == id) + trait_items.iter().position(ref |m| m.ident() == id) } /// Returns a vector containing the indices of all type parameters that appear @@ -3449,7 +3454,7 @@ pub fn impl_or_trait_item_idx(id: ast::Ident, trait_items: &[ImplOrTraitItem]) /// to a bitset or some other representation. pub fn param_tys_in_type(ty: t) -> Vec { let mut rslt = Vec::new(); - walk_ty(ty, |ty| { + walk_ty(ty, ref |ty| { match get(ty).sty { ty_param(p) => { rslt.push(p); @@ -3945,7 +3950,7 @@ pub fn substd_enum_variants(cx: &ctxt, -> Vec> { enum_variants(cx, id).iter().map(|variant_info| { let substd_args = variant_info.args.iter() - .map(|aty| aty.subst(cx, substs)).collect(); + .map(ref |aty| aty.subst(cx, substs)).collect(); let substd_ctor_ty = variant_info.ctor_ty.subst(cx, substs); @@ -3958,7 +3963,7 @@ pub fn substd_enum_variants(cx: &ctxt, } pub fn item_path_str(cx: &ctxt, id: ast::DefId) -> String { - with_path(cx, id, |path| ast_map::path_to_string(path)).to_string() + with_path(cx, id, ref |path| ast_map::path_to_string(path)).to_string() } pub enum DtorKind { @@ -4037,31 +4042,39 @@ pub fn enum_variants(cx: &ctxt, id: ast::DefId) -> Rc>> { match item.node { ast::ItemEnum(ref enum_definition, _) => { let mut last_discriminant: Option = None; - Rc::new(enum_definition.variants.iter().map(|&variant| { - + Rc::new(enum_definition.variants + .iter() + .map(ref |&variant| { let mut discriminant = match last_discriminant { Some(val) => val + 1, None => INITIAL_DISCRIMINANT_VALUE }; match variant.node.disr_expr { - Some(ref e) => match const_eval::eval_const_expr_partial(cx, &**e) { - Ok(const_eval::const_int(val)) => { - discriminant = val as Disr - } - Ok(const_eval::const_uint(val)) => { - discriminant = val as Disr - } - Ok(_) => { - cx.sess - .span_err(e.span, - "expected signed integer constant"); - } - Err(ref err) => { - cx.sess - .span_err(e.span, - format!("expected constant: {}", + Some(ref e) => { + match const_eval::eval_const_expr_partial( + cx, + &**e) { + Ok(const_eval::const_int(val)) => { + discriminant = val as Disr + } + Ok(const_eval::const_uint(val)) => { + discriminant = val as Disr + } + Ok(_) => { + cx.sess + .span_err(e.span, + "expected signed \ + integer constant"); + } + Err(ref err) => { + cx.sess + .span_err(e.span, + format!( + "expected \ + constant: {}", *err).as_slice()); + } } }, None => {} @@ -4144,9 +4157,9 @@ pub fn each_attr(tcx: &ctxt, did: DefId, f: |&ast::Attribute| -> bool) -> bool { } else { info!("getting foreign attrs"); let mut cont = true; - csearch::get_item_attrs(&tcx.sess.cstore, did, |attrs| { + csearch::get_item_attrs(&tcx.sess.cstore, did, ref |attrs| { if cont { - cont = attrs.iter().all(|attr| f(attr)); + cont = attrs.iter().all(ref |attr| f(attr)); } }); info!("done"); @@ -4157,7 +4170,7 @@ pub fn each_attr(tcx: &ctxt, did: DefId, f: |&ast::Attribute| -> bool) -> bool { /// Determine whether an item is annotated with an attribute pub fn has_attr(tcx: &ctxt, did: DefId, attr: &str) -> bool { let mut found = false; - each_attr(tcx, did, |item| { + each_attr(tcx, did, ref |item| { if item.check_name(attr) { found = true; false @@ -4181,7 +4194,7 @@ pub fn lookup_simd(tcx: &ctxt, did: DefId) -> bool { // Obtain the representation annotation for a definition. pub fn lookup_repr_hint(tcx: &ctxt, did: DefId) -> attr::ReprAttr { let mut acc = attr::ReprAny; - ty::each_attr(tcx, did, |meta| { + ty::each_attr(tcx, did, ref |meta| { acc = attr::find_repr_attr(tcx.sess.diagnostic(), meta, acc); true }); @@ -4242,7 +4255,7 @@ pub fn lookup_struct_fields(cx: &ctxt, did: ast::DefId) -> Vec { // we could cache the whole list of fields here. let struct_fields = cx.struct_fields.borrow(); let mut results: SmallVector<&[field_ty]> = SmallVector::zero(); - each_super_struct(cx, did, |s| { + each_super_struct(cx, did, ref |s| { match struct_fields.find(&s) { Some(fields) => results.push(fields.as_slice()), _ => { @@ -4253,9 +4266,13 @@ pub fn lookup_struct_fields(cx: &ctxt, did: ast::DefId) -> Vec { } }); - let len = results.as_slice().iter().map(|x| x.len()).sum(); + let len = results.as_slice().iter().map(ref |x| x.len()).sum(); let mut result: Vec = Vec::with_capacity(len); - result.extend(results.as_slice().iter().flat_map(|rs| rs.iter().map(|f| f.clone()))); + result.extend(results.as_slice() + .iter() + .flat_map(ref |rs| { + rs.iter().map(ref |f| f.clone()) + })); assert!(result.len() == len); result } else { @@ -4796,7 +4813,7 @@ pub fn hash_crate_independent(tcx: &ctxt, t: t, svh: &Svh) -> u64 { macro_rules! byte( ($b:expr) => { ($b as u8).hash(&mut state) } ); macro_rules! hash( ($e:expr) => { $e.hash(&mut state) } ); - let region = |_state: &mut sip::SipState, r: Region| { + let region = ref |_state: &mut sip::SipState, r: Region| { match r { ReStatic => {} @@ -4810,7 +4827,7 @@ pub fn hash_crate_independent(tcx: &ctxt, t: t, svh: &Svh) -> u64 { } } }; - let did = |state: &mut sip::SipState, did: DefId| { + let did = ref |state: &mut sip::SipState, did: DefId| { let h = if ast_util::is_local(did) { svh.clone() } else { @@ -4819,10 +4836,10 @@ pub fn hash_crate_independent(tcx: &ctxt, t: t, svh: &Svh) -> u64 { h.as_str().hash(state); did.node.hash(state); }; - let mt = |state: &mut sip::SipState, mt: mt| { + let mt = ref |state: &mut sip::SipState, mt: mt| { mt.mutbl.hash(state); }; - ty::walk_ty(t, |t| { + ty::walk_ty(t, ref |t| { match ty::get(t).sty { ty_nil => byte!(0), ty_bot => byte!(1), diff --git a/src/librustc/middle/typeck/astconv.rs b/src/librustc/middle/typeck/astconv.rs index add31ed87ce4c..416ee07dae85d 100644 --- a/src/librustc/middle/typeck/astconv.rs +++ b/src/librustc/middle/typeck/astconv.rs @@ -1171,8 +1171,8 @@ pub fn ty_of_closure( // that function type let rb = rscope::BindingRscope::new(id); - let input_tys = decl.inputs.iter().enumerate().map(|(i, a)| { - let expected_arg_ty = expected_sig.as_ref().and_then(|e| { + let input_tys = decl.inputs.iter().enumerate().map(ref |(i, a)| { + let expected_arg_ty = expected_sig.as_ref().and_then(ref |e| { // no guarantee that the correct number of expected args // were supplied if i < e.inputs.len() { diff --git a/src/librustc/middle/typeck/check/method.rs b/src/librustc/middle/typeck/check/method.rs index 1e3ea095704bf..a4090c32e327d 100644 --- a/src/librustc/middle/typeck/check/method.rs +++ b/src/librustc/middle/typeck/check/method.rs @@ -219,7 +219,7 @@ fn get_method_index(tcx: &ty::ctxt, // we find the trait the method came from, counting up the // methods from them. let mut method_count = 0; - ty::each_bound_trait_and_supertraits(tcx, &[subtrait], |bound_ref| { + ty::each_bound_trait_and_supertraits(tcx, &[subtrait], ref |bound_ref| { if bound_ref.def_id == trait_ref.def_id { false } else { @@ -708,12 +708,14 @@ impl<'a> LookupContext<'a> { let tcx = self.tcx(); let mut next_bound_idx = 0; // count only trait bounds - ty::each_bound_trait_and_supertraits(tcx, bounds, |bound_trait_ref| { + ty::each_bound_trait_and_supertraits(tcx, + bounds, + ref |bound_trait_ref| { let this_bound_idx = next_bound_idx; next_bound_idx += 1; let trait_items = ty::trait_items(tcx, bound_trait_ref.def_id); - match trait_items.iter().position(|ti| { + match trait_items.iter().position(ref |ti| { match *ti { ty::MethodTraitItem(ref m) => { m.explicit_self != ty::StaticExplicitSelfCategory && @@ -786,7 +788,7 @@ impl<'a> LookupContext<'a> { debug!("push_candidates_from_impl: {} {}", token::get_name(self.m_name), impl_items.iter() - .map(|&did| { + .map(ref |&did| { ty::impl_or_trait_item(self.tcx(), did.def_id()).ident() }) @@ -794,11 +796,11 @@ impl<'a> LookupContext<'a> { .repr(self.tcx())); let method = match impl_items.iter() - .map(|&did| { + .map(ref |&did| { ty::impl_or_trait_item(self.tcx(), did.def_id()) }) - .find(|m| { + .find(ref |m| { m.ident().name == self.m_name }) { Some(ty::MethodTraitItem(method)) => method, @@ -807,7 +809,7 @@ impl<'a> LookupContext<'a> { // determine the `self` of the impl with fresh // variables for each parameter: - let span = self.self_expr.map_or(self.span, |e| e.span); + let span = self.self_expr.map_or(self.span, ref |e| e.span); let vcx = self.fcx.vtable_context(); let TypeAndSubsts { substs: impl_substs, @@ -1269,7 +1271,7 @@ impl<'a> LookupContext<'a> { MethodObject(..) => { // For annoying reasons, we've already handled the // substitution of self for object calls. - let args = fn_sig.inputs.slice_from(1).iter().map(|t| { + let args = fn_sig.inputs.slice_from(1).iter().map(ref |t| { t.subst(tcx, &all_substs) }); Some(*fn_sig.inputs.get(0)).move_iter().chain(args).collect() diff --git a/src/librustc/middle/typeck/check/mod.rs b/src/librustc/middle/typeck/check/mod.rs index 7896316a47229..f5b11411976a5 100644 --- a/src/librustc/middle/typeck/check/mod.rs +++ b/src/librustc/middle/typeck/check/mod.rs @@ -531,7 +531,7 @@ fn check_fn<'a>(ccx: &'a CrateCtxt<'a>, // to be do-block/for-loop confusion demand::suptype_with_fn(&fcx, tail_expr.span, false, fcx.ret_ty, fcx.expr_ty(&**tail_expr), - |sp, e, a, s| { + ref |sp, e, a, s| { fcx.report_mismatched_return_types(sp, e, a, s); }); } @@ -804,7 +804,7 @@ fn check_impl_items_against_trait(ccx: &CrateCtxt, // corresponding method definition in the trait. let opt_trait_method_ty = trait_items.iter() - .find(|ti| { + .find(ref |ti| { ti.ident().name == impl_item_ty.ident() .name }); @@ -3534,7 +3534,7 @@ fn check_expr_with_unifier(fcx: &FnCtxt, } ast::ExprTup(ref elts) => { let expected = expected.only_has_type(); - let flds = expected.map_to_option(fcx, |sty| { + let flds = expected.map_to_option(fcx, ref |sty| { match *sty { ty::ty_tup(ref flds) => Some((*flds).clone()), _ => None @@ -3543,7 +3543,7 @@ fn check_expr_with_unifier(fcx: &FnCtxt, let mut bot_field = false; let mut err_field = false; - let elt_ts = elts.iter().enumerate().map(|(i, e)| { + let elt_ts = elts.iter().enumerate().map(ref |(i, e)| { let opt_hint = match flds { Some(ref fs) if i < fs.len() => ExpectHasType(*fs.get(i)), _ => NoExpectation @@ -4771,7 +4771,7 @@ pub fn check_bounds_are_used(ccx: &CrateCtxt, if tps.len() == 0u { return; } let mut tps_used = Vec::from_elem(tps.len(), false); - ty::walk_ty(ty, |t| { + ty::walk_ty(ty, ref |t| { match ty::get(t).sty { ty::ty_param(ParamTy {idx, ..}) => { debug!("Found use of ty param num {}", idx); diff --git a/src/librustc/middle/typeck/check/regionck.rs b/src/librustc/middle/typeck/check/regionck.rs index 8e41c9463f6b8..eeddcb5898f90 100644 --- a/src/librustc/middle/typeck/check/regionck.rs +++ b/src/librustc/middle/typeck/check/regionck.rs @@ -649,7 +649,7 @@ fn check_expr_fn_block(rcx: &mut Rcx, match ty::get(function_type).sty { ty::ty_closure(box ty::ClosureTy { store: ty::RegionTraitStore(region, _), ..}) => { - freevars::with_freevars(tcx, expr.id, |freevars| { + freevars::with_freevars(tcx, expr.id, ref |freevars| { if freevars.is_empty() { // No free variables means that the environment // will be NULL at runtime and hence the closure @@ -666,7 +666,7 @@ fn check_expr_fn_block(rcx: &mut Rcx, }); } ty::ty_unboxed_closure(_, region) => { - freevars::with_freevars(tcx, expr.id, |freevars| { + freevars::with_freevars(tcx, expr.id, ref |freevars| { // No free variables means that there is no environment and // hence the closure has static lifetime. Otherwise, the // closure must not outlive the variables it closes over @@ -1018,9 +1018,14 @@ fn constrain_regions_in_type_of_node( // is going to fail anyway, so just stop here and let typeck // report errors later on in the writeback phase. let ty0 = rcx.resolve_node_type(id); - let ty = ty::adjust_ty(tcx, origin.span(), id, ty0, + let ty = ty::adjust_ty(tcx, + origin.span(), + id, + ty0, rcx.fcx.inh.adjustments.borrow().find(&id), - |method_call| rcx.resolve_method_type(method_call)); + ref |method_call| { + rcx.resolve_method_type(method_call) + }); debug!("constrain_regions_in_type_of_node(\ ty={}, ty0={}, id={}, minimum_lifetime={:?})", ty_to_string(tcx, ty), ty_to_string(tcx, ty0), diff --git a/src/librustc/middle/typeck/check/regionmanip.rs b/src/librustc/middle/typeck/check/regionmanip.rs index 53e26f8696f61..fb0adeb0db57d 100644 --- a/src/librustc/middle/typeck/check/regionmanip.rs +++ b/src/librustc/middle/typeck/check/regionmanip.rs @@ -29,11 +29,11 @@ pub fn replace_late_bound_regions_in_fn_sig( let mut map = HashMap::new(); let fn_sig = { - let mut f = ty_fold::RegionFolder::regions(tcx, |r| { + let mut f = ty_fold::RegionFolder::regions(tcx, ref |r| { debug!("region r={}", r.to_string()); match r { ty::ReLateBound(s, br) if s == fn_sig.binder_id => { - *map.find_or_insert_with(br, |_| mapf(br)) + *map.find_or_insert_with(br, ref |_| mapf(br)) } _ => r } diff --git a/src/librustc/middle/typeck/check/vtable.rs b/src/librustc/middle/typeck/check/vtable.rs index 1aa469b15ba15..fba8b46460a14 100644 --- a/src/librustc/middle/typeck/check/vtable.rs +++ b/src/librustc/middle/typeck/check/vtable.rs @@ -129,7 +129,7 @@ fn lookup_vtables_for_param(vcx: &VtableContext, ty::each_bound_trait_and_supertraits(tcx, type_param_bounds.trait_bounds .as_slice(), - |trait_ref| { + ref |trait_ref| { // ...and here trait_ref is each bound that was declared on A, // expressed in terms of the type parameters. @@ -142,7 +142,8 @@ fn lookup_vtables_for_param(vcx: &VtableContext, // Substitute the values of the type parameters that may // appear in the bound. - let trait_ref = substs.as_ref().map_or(trait_ref.clone(), |substs| { + let trait_ref = substs.as_ref() + .map_or(trait_ref.clone(), ref |substs| { debug!("about to subst: {}, {}", trait_ref.repr(tcx), substs.repr(tcx)); trait_ref.subst(tcx, *substs) @@ -283,7 +284,7 @@ fn lookup_vtable_from_bounds(vcx: &VtableContext, let mut n_bound = 0; let mut ret = None; - ty::each_bound_trait_and_supertraits(tcx, bounds, |bound_trait_ref| { + ty::each_bound_trait_and_supertraits(tcx, bounds, ref |bound_trait_ref| { debug!("checking bounds trait {}", bound_trait_ref.repr(vcx.tcx())); diff --git a/src/librustc/middle/typeck/coherence.rs b/src/librustc/middle/typeck/coherence.rs index 3dee787b6c906..504b37f2635ae 100644 --- a/src/librustc/middle/typeck/coherence.rs +++ b/src/librustc/middle/typeck/coherence.rs @@ -106,7 +106,7 @@ fn type_is_defined_in_local_crate(tcx: &ty::ctxt, original_type: t) -> bool { */ let mut found_nominal = false; - ty::walk_ty(original_type, |t| { + ty::walk_ty(original_type, ref |t| { match get(t).sty { ty_enum(def_id, _) | ty_struct(def_id, _) | @@ -461,14 +461,16 @@ impl<'a> CoherenceChecker<'a> { } fn iter_impls_of_trait(&self, trait_def_id: DefId, f: |DefId|) { - self.iter_impls_of_trait_local(trait_def_id, |x| f(x)); + self.iter_impls_of_trait_local(trait_def_id, ref |x| f(x)); if trait_def_id.krate == LOCAL_CRATE { return; } let crate_store = &self.crate_context.tcx.sess.cstore; - csearch::each_implementation_for_trait(crate_store, trait_def_id, |impl_def_id| { + csearch::each_implementation_for_trait(crate_store, + trait_def_id, + ref |impl_def_id| { // Is this actually necessary? let _ = lookup_item_type(self.crate_context.tcx, impl_def_id); f(impl_def_id); @@ -476,7 +478,11 @@ impl<'a> CoherenceChecker<'a> { } fn iter_impls_of_trait_local(&self, trait_def_id: DefId, f: |DefId|) { - match self.crate_context.tcx.trait_impls.borrow().find(&trait_def_id) { + match self.crate_context + .tcx + .trait_impls + .borrow() + .find(&trait_def_id) { Some(impls) => { for &impl_did in impls.borrow().iter() { f(impl_did); @@ -670,8 +676,8 @@ impl<'a> CoherenceChecker<'a> { let mut impls_seen = HashSet::new(); let crate_store = &self.crate_context.tcx.sess.cstore; - crate_store.iter_crate_data(|crate_number, _crate_metadata| { - each_impl(crate_store, crate_number, |def_id| { + crate_store.iter_crate_data(ref |crate_number, _crate_metadata| { + each_impl(crate_store, crate_number, ref |def_id| { assert_eq!(crate_number, def_id.krate); self.add_external_impl(&mut impls_seen, def_id) }) diff --git a/src/librustc/middle/typeck/collect.rs b/src/librustc/middle/typeck/collect.rs index 5c3317972cd37..94a5a8cb7b9b4 100644 --- a/src/librustc/middle/typeck/collect.rs +++ b/src/librustc/middle/typeck/collect.rs @@ -599,7 +599,7 @@ pub fn convert_struct(ccx: &CrateCtxt, // Write the type of each of the members and check for duplicate fields. let mut seen_fields: HashMap = HashMap::new(); - let field_tys = struct_def.fields.iter().map(|f| { + let field_tys = struct_def.fields.iter().map(ref |f| { let result = convert_field(ccx, &pty.generics, f, local_def(id)); if result.name != special_idents::unnamed_field.name { @@ -854,9 +854,9 @@ pub fn trait_def_of_item(ccx: &CrateCtxt, it: &ast::Item) -> Rc { if !ty::try_add_builtin_trait(ccx.tcx, trait_def_id, &mut bounds) { // FIXME(#5527) Could have same trait multiple times - if ty_trait_refs.iter().any( - |other_trait| other_trait.def_id == trait_ref.def_id) - { + if ty_trait_refs.iter().any(ref |other_trait| { + other_trait.def_id == trait_ref.def_id + }) { // This means a trait inherited from the same // supertrait more than once. span_err!(tcx.sess, sp, E0127, diff --git a/src/librustc/middle/typeck/infer/combine.rs b/src/librustc/middle/typeck/infer/combine.rs index d99d55d4d873d..a876a6ccbb494 100644 --- a/src/librustc/middle/typeck/infer/combine.rs +++ b/src/librustc/middle/typeck/infer/combine.rs @@ -319,8 +319,8 @@ pub fn expected_found( pub fn eq_tys(this: &C, a: ty::t, b: ty::t) -> ures { let suber = this.sub(); - this.infcx().try(|| { - suber.tys(a, b).and_then(|_ok| suber.contratys(a, b)).to_ures() + this.infcx().try(ref || { + suber.tys(a, b).and_then(ref |_ok| suber.contratys(a, b)).to_ures() }) } @@ -330,10 +330,10 @@ pub fn eq_regions(this: &C, a: ty::Region, b: ty::Region) a.repr(this.infcx().tcx), b.repr(this.infcx().tcx)); let sub = this.sub(); - indent(|| { - this.infcx().try(|| { - sub.regions(a, b).and_then(|_r| sub.contraregions(a, b)) - }).or_else(|e| { + indent(ref || { + this.infcx().try(ref || { + sub.regions(a, b).and_then(ref |_r| sub.contraregions(a, b)) + }).or_else(ref |e| { // substitute a better error, but use the regions // found in the original error match e { diff --git a/src/librustc/middle/typeck/infer/error_reporting.rs b/src/librustc/middle/typeck/infer/error_reporting.rs index beaf81409a38b..3698a28f9f94a 100644 --- a/src/librustc/middle/typeck/infer/error_reporting.rs +++ b/src/librustc/middle/typeck/infer/error_reporting.rs @@ -1198,7 +1198,7 @@ impl<'a> Rebuilder<'a> { let mut new_lts = Vec::new(); if last_seg.lifetimes.len() == 0 { // traverse once to see if there's a need to insert lifetime - let need_insert = range(0, expected).any(|i| { + let need_insert = range(0, expected).any(ref |i| { indexes.contains(&i) }); if need_insert { diff --git a/src/librustc/middle/typeck/infer/glb.rs b/src/librustc/middle/typeck/infer/glb.rs index b6628c22ae60a..49d93b8ffd0d6 100644 --- a/src/librustc/middle/typeck/infer/glb.rs +++ b/src/librustc/middle/typeck/infer/glb.rs @@ -153,7 +153,7 @@ impl<'f> Combine for Glb<'f> { fold_regions_in_sig( self.get_ref().infcx.tcx, &sig0, - |r| { + ref |r| { generalize_region(self, mark, new_vars.as_slice(), diff --git a/src/librustc/middle/typeck/infer/lub.rs b/src/librustc/middle/typeck/infer/lub.rs index 6a50038afe77f..31686a41e1c6b 100644 --- a/src/librustc/middle/typeck/infer/lub.rs +++ b/src/librustc/middle/typeck/infer/lub.rs @@ -137,8 +137,14 @@ impl<'f> Combine for Lub<'f> { fold_regions_in_sig( self.get_ref().infcx.tcx, &sig0, - |r| generalize_region(self, mark, new_vars.as_slice(), - sig0.binder_id, &a_map, r)); + ref |r| { + generalize_region(self, + mark, + new_vars.as_slice(), + sig0.binder_id, + &a_map, + r) + }); return Ok(sig1); fn generalize_region(this: &Lub, @@ -160,7 +166,7 @@ impl<'f> Combine for Lub<'f> { // Variables created during LUB computation which are // *related* to regions that pre-date the LUB computation // stay as they are. - if !tainted.iter().all(|r| is_var_in_set(new_vars, *r)) { + if !tainted.iter().all(ref |r| is_var_in_set(new_vars, *r)) { debug!("generalize_region(r0={:?}): \ non-new-variables found in {:?}", r0, tainted); @@ -174,7 +180,7 @@ impl<'f> Combine for Lub<'f> { // bound region from A that we find it to be associated // with. for (a_br, a_r) in a_map.iter() { - if tainted.iter().any(|x| x == a_r) { + if tainted.iter().any(ref |x| x == a_r) { debug!("generalize_region(r0={:?}): \ replacing with {:?}, tainted={:?}", r0, *a_br, tainted); diff --git a/src/librustc/middle/typeck/infer/mod.rs b/src/librustc/middle/typeck/infer/mod.rs index 30fffc42a3f97..0159e3b16e8ea 100644 --- a/src/librustc/middle/typeck/infer/mod.rs +++ b/src/librustc/middle/typeck/infer/mod.rs @@ -295,8 +295,8 @@ pub fn common_supertype(cx: &InferCtxt, values: Types(expected_found(a_is_expected, a, b)) }; - let result = - cx.commit_if_ok(|| cx.lub(a_is_expected, trace.clone()).tys(a, b)); + let result = cx.commit_if_ok(ref || cx.lub(a_is_expected, trace.clone()) + .tys(a, b)); match result { Ok(t) => t, Err(ref err) => { @@ -314,7 +314,7 @@ pub fn mk_subty(cx: &InferCtxt, -> ures { debug!("mk_subty({} <: {})", a.repr(cx.tcx), b.repr(cx.tcx)); indent(|| { - cx.commit_if_ok(|| { + cx.commit_if_ok(ref || { let trace = TypeTrace { origin: origin, values: Types(expected_found(a_is_expected, a, b)) @@ -326,7 +326,7 @@ pub fn mk_subty(cx: &InferCtxt, pub fn can_mk_subty(cx: &InferCtxt, a: ty::t, b: ty::t) -> ures { debug!("can_mk_subty({} <: {})", a.repr(cx.tcx), b.repr(cx.tcx)); - cx.probe(|| { + cx.probe(ref || { let trace = TypeTrace { origin: Misc(codemap::DUMMY_SP), values: Types(expected_found(true, a, b)) @@ -351,8 +351,7 @@ pub fn mk_eqty(cx: &InferCtxt, origin: TypeOrigin, a: ty::t, b: ty::t) - -> ures -{ + -> ures { debug!("mk_eqty({} <: {})", a.repr(cx.tcx), b.repr(cx.tcx)); cx.commit_if_ok(|| { let trace = TypeTrace { @@ -369,12 +368,11 @@ pub fn mk_sub_trait_refs(cx: &InferCtxt, origin: TypeOrigin, a: Rc, b: Rc) - -> ures -{ + -> ures { debug!("mk_sub_trait_refs({} <: {})", a.repr(cx.tcx), b.repr(cx.tcx)); - indent(|| { - cx.commit_if_ok(|| { + indent(ref || { + cx.commit_if_ok(ref || { let trace = TypeTrace { origin: origin, values: TraitRefs(expected_found(a_is_expected, a.clone(), b.clone())) @@ -402,8 +400,8 @@ pub fn mk_coercety(cx: &InferCtxt, b: ty::t) -> CoerceResult { debug!("mk_coercety({} -> {})", a.repr(cx.tcx), b.repr(cx.tcx)); - indent(|| { - cx.commit_if_ok(|| { + indent(ref || { + cx.commit_if_ok(ref || { let trace = TypeTrace { origin: origin, values: Types(expected_found(a_is_expected, a, b)) @@ -420,7 +418,7 @@ pub fn resolve_type(cx: &InferCtxt, modes: uint) -> fres { let mut resolver = resolver(cx, modes, span); - cx.commit_unconditionally(|| resolver.resolve_type_chk(a)) + cx.commit_unconditionally(ref || resolver.resolve_type_chk(a)) } pub fn resolve_region(cx: &InferCtxt, r: ty::Region, modes: uint) @@ -561,7 +559,7 @@ impl<'a> InferCtxt<'a> { /// Execute `f` and commit the bindings if successful pub fn commit_if_ok(&self, f: || -> Result) -> Result { - self.commit_unconditionally(|| self.try(|| f())) + self.commit_unconditionally(ref || self.try(ref || f())) } /// Execute `f`, unroll bindings on failure diff --git a/src/librustc/middle/typeck/infer/resolve.rs b/src/librustc/middle/typeck/infer/resolve.rs index 2ae95309d41d9..53d174e7aaa04 100644 --- a/src/librustc/middle/typeck/infer/resolve.rs +++ b/src/librustc/middle/typeck/infer/resolve.rs @@ -128,7 +128,7 @@ impl<'a> ResolveState<'a> { // allow us to pass back errors in any useful way. assert!(self.v_seen.is_empty()); - let rty = indent(|| self.resolve_type(typ) ); + let rty = indent(ref || self.resolve_type(typ) ); assert!(self.v_seen.is_empty()); match self.err { None => { @@ -142,11 +142,10 @@ impl<'a> ResolveState<'a> { } } - pub fn resolve_region_chk(&mut self, - orig: ty::Region) + pub fn resolve_region_chk(&mut self, orig: ty::Region) -> fres { self.err = None; - let resolved = indent(|| self.resolve_region(orig) ); + let resolved = indent(ref || self.resolve_region(orig) ); match self.err { None => Ok(resolved), Some(e) => Err(e) diff --git a/src/librustc/middle/typeck/mod.rs b/src/librustc/middle/typeck/mod.rs index 4000807ec1b8e..8e2210c761558 100644 --- a/src/librustc/middle/typeck/mod.rs +++ b/src/librustc/middle/typeck/mod.rs @@ -483,20 +483,20 @@ pub fn check_crate(tcx: &ty::ctxt, tcx: tcx }; - time(time_passes, "type collecting", (), |_| + time(time_passes, "type collecting", (), ref |_| collect::collect_item_types(&ccx, krate)); // this ensures that later parts of type checking can assume that items // have valid types and not error tcx.sess.abort_if_errors(); - time(time_passes, "variance inference", (), |_| + time(time_passes, "variance inference", (), ref |_| variance::infer_variance(tcx, krate)); - time(time_passes, "coherence checking", (), |_| + time(time_passes, "coherence checking", (), ref |_| coherence::check_coherence(&ccx, krate)); - time(time_passes, "type checking", (), |_| + time(time_passes, "type checking", (), ref |_| check::check_item_types(&ccx, krate)); check_for_entry_fn(&ccx); diff --git a/src/librustc/middle/weak_lang_items.rs b/src/librustc/middle/weak_lang_items.rs index 7a36c423add04..543ce2f541a61 100644 --- a/src/librustc/middle/weak_lang_items.rs +++ b/src/librustc/middle/weak_lang_items.rs @@ -76,7 +76,7 @@ fn verify(sess: &Session, items: &lang_items::LanguageItems) { if !needs_check { return } let mut missing = HashSet::new(); - sess.cstore.iter_crate_data(|cnum, _| { + sess.cstore.iter_crate_data(ref |cnum, _| { for item in csearch::get_missing_lang_items(&sess.cstore, cnum).iter() { missing.insert(*item); } diff --git a/src/librustc_back/sha2.rs b/src/librustc_back/sha2.rs index d24ff49c61558..15e80c93b28d5 100644 --- a/src/librustc_back/sha2.rs +++ b/src/librustc_back/sha2.rs @@ -464,7 +464,9 @@ impl Engine256 { } let self_state = &mut self.state; - self.buffer.standard_padding(8, |input: &[u8]| { self_state.process_block(input) }); + self.buffer.standard_padding(8, ref |input: &[u8]| { + self_state.process_block(input) + }); write_u32_be(self.buffer.next(4), (self.length_bits >> 32) as u32 ); write_u32_be(self.buffer.next(4), self.length_bits as u32); self_state.process_block(self.buffer.full_buffer()); @@ -656,7 +658,7 @@ mod bench { pub fn sha256_10(b: &mut Bencher) { let mut sh = Sha256::new(); let bytes = [1u8, ..10]; - b.iter(|| { + b.iter(ref || { sh.input(bytes); }); b.bytes = bytes.len() as u64; @@ -666,7 +668,7 @@ mod bench { pub fn sha256_1k(b: &mut Bencher) { let mut sh = Sha256::new(); let bytes = [1u8, ..1024]; - b.iter(|| { + b.iter(ref || { sh.input(bytes); }); b.bytes = bytes.len() as u64; @@ -676,7 +678,7 @@ mod bench { pub fn sha256_64k(b: &mut Bencher) { let mut sh = Sha256::new(); let bytes = [1u8, ..65536]; - b.iter(|| { + b.iter(ref || { sh.input(bytes); }); b.bytes = bytes.len() as u64; diff --git a/src/librustc_llvm/archive_ro.rs b/src/librustc_llvm/archive_ro.rs index 6c3778787e2e2..bb41838a7737b 100644 --- a/src/librustc_llvm/archive_ro.rs +++ b/src/librustc_llvm/archive_ro.rs @@ -44,7 +44,7 @@ impl ArchiveRO { pub fn read<'a>(&'a self, file: &str) -> Option<&'a [u8]> { unsafe { let mut size = 0 as libc::size_t; - let ptr = file.with_c_str(|file| { + let ptr = file.with_c_str(ref |file| { ::LLVMRustArchiveReadSection(self.ptr, file, &mut size) }); if ptr.is_null() { diff --git a/src/librustdoc/clean/inline.rs b/src/librustdoc/clean/inline.rs index 0e87be1c241b9..2b92b4f1ff58f 100644 --- a/src/librustdoc/clean/inline.rs +++ b/src/librustdoc/clean/inline.rs @@ -123,8 +123,8 @@ fn try_inline_def(cx: &core::DocContext, pub fn load_attrs(tcx: &ty::ctxt, did: ast::DefId) -> Vec { let mut attrs = Vec::new(); - csearch::get_item_attrs(&tcx.sess.cstore, did, |v| { - attrs.extend(v.move_iter().map(|mut a| { + csearch::get_item_attrs(&tcx.sess.cstore, did, ref |v| { + attrs.extend(v.move_iter().map(ref |mut a| { // FIXME this isn't quite always true, it's just true about 99% of // the time when dealing with documentation. For example, // this would treat doc comments of the form `#[doc = "foo"]` @@ -159,15 +159,15 @@ pub fn build_external_trait(tcx: &ty::ctxt, did: ast::DefId) -> clean::Trait { let def = ty::lookup_trait_def(tcx, did); let trait_items = ty::trait_items(tcx, did).clean(); let provided = ty::provided_trait_methods(tcx, did); - let mut items = trait_items.move_iter().map(|trait_item| { - if provided.iter().any(|a| a.def_id == trait_item.def_id) { + let mut items = trait_items.move_iter().map(ref |trait_item| { + if provided.iter().any(ref |a| a.def_id == trait_item.def_id) { clean::ProvidedMethod(trait_item) } else { clean::RequiredMethod(trait_item) } }); let supertraits = ty::trait_supertraits(tcx, did); - let mut parents = supertraits.iter().map(|i| { + let mut parents = supertraits.iter().map(ref |i| { match i.clean() { clean::TraitBound(ty) => ty, clean::RegionBound => unreachable!() @@ -242,7 +242,9 @@ fn build_impls(cx: &core::DocContext, match tcx.inherent_impls.borrow().find(&did) { None => {} Some(i) => { - impls.extend(i.borrow().iter().map(|&did| { build_impl(cx, tcx, did) })); + impls.extend(i.borrow() + .iter() + .map(ref |&did| build_impl(cx, tcx, did))); } } @@ -257,7 +259,7 @@ fn build_impls(cx: &core::DocContext, if cx.populated_crate_impls.borrow_mut().insert(did.krate) { csearch::each_top_level_item_of_crate(&tcx.sess.cstore, did.krate, - |def, _, _| { + ref |def, _, _| { populate_impls(cx, tcx, def, &mut impls) }); @@ -270,7 +272,7 @@ fn build_impls(cx: &core::DocContext, decoder::DlDef(def::DefMod(did)) => { csearch::each_child_of_item(&tcx.sess.cstore, did, - |def, _, _| { + ref |def, _, _| { populate_impls(cx, tcx, def, impls) }) } @@ -279,7 +281,7 @@ fn build_impls(cx: &core::DocContext, } } - impls.move_iter().filter_map(|a| a).collect() + impls.move_iter().filter_map(ref |a| a).collect() } fn build_impl(cx: &core::DocContext, @@ -294,7 +296,7 @@ fn build_impl(cx: &core::DocContext, match associated_trait { Some(ref t) => { let trait_attrs = load_attrs(tcx, t.def_id); - if trait_attrs.iter().any(|a| is_doc_hidden(a)) { + if trait_attrs.iter().any(ref |a| is_doc_hidden(a)) { return None } } @@ -305,7 +307,7 @@ fn build_impl(cx: &core::DocContext, let ty = ty::lookup_item_type(tcx, did); let trait_items = csearch::get_impl_items(&tcx.sess.cstore, did) .iter() - .filter_map(|did| { + .filter_map(ref |did| { let did = did.def_id(); let impl_item = ty::impl_or_trait_item(tcx, did); match impl_item { @@ -334,7 +336,7 @@ fn build_impl(cx: &core::DocContext, return Some(clean::Item { inner: clean::ImplItem(clean::Impl { derived: clean::detect_derived(attrs.as_slice()), - trait_: associated_trait.clean().map(|bound| { + trait_: associated_trait.clean().map(ref |bound| { match bound { clean::TraitBound(ty) => ty, clean::RegionBound => unreachable!(), @@ -355,7 +357,7 @@ fn build_impl(cx: &core::DocContext, fn is_doc_hidden(a: &clean::Attribute) -> bool { match *a { clean::List(ref name, ref inner) if name.as_slice() == "doc" => { - inner.iter().any(|a| { + inner.iter().any(ref |a| { match *a { clean::Word(ref s) => s.as_slice() == "hidden", _ => false, diff --git a/src/librustdoc/clean/mod.rs b/src/librustdoc/clean/mod.rs index 68e1529fb1770..6738ae5ca3b80 100644 --- a/src/librustdoc/clean/mod.rs +++ b/src/librustdoc/clean/mod.rs @@ -113,10 +113,10 @@ impl<'a> Clean for visit_ast::RustdocVisitor<'a> { let cx = get_cx(); let mut externs = Vec::new(); - cx.sess().cstore.iter_crate_data(|n, meta| { + cx.sess().cstore.iter_crate_data(ref |n, meta| { externs.push((n, meta.clean())); }); - externs.sort_by(|&(a, _), &(b, _)| a.cmp(&b)); + externs.sort_by(ref |&(a, _), &(b, _)| a.cmp(&b)); // Figure out the name of this crate let input = driver::FileInput(cx.src.clone()); @@ -201,16 +201,18 @@ pub struct ExternalCrate { impl Clean for cstore::crate_metadata { fn clean(&self) -> ExternalCrate { let mut primitives = Vec::new(); - get_cx().tcx_opt().map(|tcx| { + get_cx().tcx_opt().map(ref |tcx| { csearch::each_top_level_item_of_crate(&tcx.sess.cstore, self.cnum, - |def, _, _| { + ref |def, _, _| { let did = match def { decoder::DlDef(def::DefMod(did)) => did, _ => return }; let attrs = inline::load_attrs(tcx, did); - Primitive::find(attrs.as_slice()).map(|prim| primitives.push(prim)); + Primitive::find(attrs.as_slice()).map(ref |prim| { + primitives.push(prim) + }); }) }); ExternalCrate { @@ -1803,14 +1805,16 @@ impl Clean> for ast::ViewItem { // Attempt to inline all reexported items, but be sure // to keep any non-inlineable reexports so they can be // listed in the documentation. - let remaining = list.iter().filter(|path| { + let remaining = list.iter().filter(ref |path| { match inline::try_inline(path.node.id(), None) { Some(items) => { ret.extend(items.move_iter()); false } None => true, } - }).map(|a| a.clone()).collect::>(); + }).map(ref |a| { + a.clone() + }).collect::>(); if remaining.len() > 0 { let path = ast::ViewPathList(a.clone(), remaining, @@ -1970,7 +1974,7 @@ fn lit_to_string(lit: &ast::Lit) -> String { ast::LitBinary(ref data) => format!("{:?}", data.as_slice()), ast::LitByte(b) => { let mut res = String::from_str("b'"); - (b as char).escape_default(|c| { + (b as char).escape_default(ref |c| { res.push_char(c); }); res.push_char('\''); diff --git a/src/librustdoc/html/markdown.rs b/src/librustdoc/html/markdown.rs index 97fa58d507774..f34246aa86619 100644 --- a/src/librustdoc/html/markdown.rs +++ b/src/librustdoc/html/markdown.rs @@ -188,22 +188,22 @@ pub fn render(w: &mut fmt::Formatter, s: &str, print_toc: bool) -> fmt::Result { if !rendered { let mut s = String::new(); - let id = playground_krate.get().map(|krate| { + let id = playground_krate.get().map(ref |krate| { let idx = test_idx.get().unwrap(); let i = idx.get(); idx.set(i + 1); - let test = origtext.lines().map(|l| { + let test = origtext.lines().map(ref |l| { stripped_filtered_line(l).unwrap_or(l) }).collect::>().connect("\n"); - let krate = krate.as_ref().map(|s| s.as_slice()); + let krate = krate.as_ref().map(ref |s| s.as_slice()); let test = test::maketest(test.as_slice(), krate, false, false); s.push_str(format!("{}", i, Escape(test.as_slice())).as_slice()); format!("rust-example-rendered-{}", i) }); - let id = id.as_ref().map(|a| a.as_slice()); + let id = id.as_ref().map(ref |a| a.as_slice()); s.push_str(highlight::highlight(text.as_slice(), None, id) .as_slice()); let output = s.to_c_str(); diff --git a/src/librustdoc/html/render.rs b/src/librustdoc/html/render.rs index be62b1cc36f40..ab1f7b6d17451 100644 --- a/src/librustdoc/html/render.rs +++ b/src/librustdoc/html/render.rs @@ -731,7 +731,7 @@ impl<'a> SourceCollector<'a> { // Create the intermediate directories let mut cur = self.dst.clone(); let mut root_path = String::from_str("../../"); - clean_srcpath(p.dirname(), |component| { + clean_srcpath(p.dirname(), ref |component| { cur.push(component); mkdir(&cur).unwrap(); root_path.push_str("../"); @@ -798,7 +798,8 @@ impl DocFolder for Cache { clean::ImplItem(ref i) => { match i.trait_ { Some(clean::ResolvedPath{ did, .. }) => { - let v = self.implementors.find_or_insert_with(did, |_| { + let v = self.implementors + .find_or_insert_with(did, ref |_| { Vec::new() }); v.push(Implementor { @@ -1069,7 +1070,7 @@ impl Context { item.name = Some(krate.name); // render stability dashboard - try!(self.recurse(stability.name.clone(), |this| { + try!(self.recurse(stability.name.clone(), ref |this| { let json_dst = &this.dst.join("stability.json"); let mut json_out = BufferedWriter::new(try!(File::create(json_dst))); try!(stability.encode(&mut json::Encoder::new(&mut json_out))); @@ -1095,7 +1096,7 @@ impl Context { let mut work = vec!((self, item)); loop { match work.pop() { - Some((mut cx, item)) => try!(cx.item(item, |cx, item| { + Some((mut cx, item)) => try!(cx.item(item, ref |cx, item| { work.push((cx.clone(), item)); })), None => break, @@ -1192,7 +1193,7 @@ impl Context { clean::ModuleItem(..) => { let name = item.name.get_ref().to_string(); let mut item = Some(item); - self.recurse(name, |this| { + self.recurse(name, ref |this| { let item = item.take_unwrap(); let dst = this.dst.join("index.html"); let dst = try!(File::create(&dst)); @@ -1245,9 +1246,8 @@ impl<'a> Item<'a> { // has anchors for the line numbers that we're linking to. if ast_util::is_local(self.item.def_id) { let mut path = Vec::new(); - clean_srcpath(self.item.source.filename.as_bytes(), |component| { - path.push(component.to_string()); - }); + clean_srcpath(self.item.source.filename.as_bytes(), + ref |component| path.push(component.to_string())); let href = if self.item.source.loline == self.item.source.hiline { format!("{}", self.item.source.loline) } else { diff --git a/src/librustdoc/html/toc.rs b/src/librustdoc/html/toc.rs index 45c75ccd1ab42..dd0458f10c90c 100644 --- a/src/librustdoc/html/toc.rs +++ b/src/librustdoc/html/toc.rs @@ -104,7 +104,7 @@ impl TocBuilder { loop { match self.chain.pop() { Some(mut next) => { - this.map(|e| next.children.entries.push(e)); + this.map(ref |e| next.children.entries.push(e)); if next.level < level { // this is the parent we want, so return it to // its rightful place. @@ -115,7 +115,7 @@ impl TocBuilder { } } None => { - this.map(|e| self.top_level.entries.push(e)); + this.map(ref |e| self.top_level.entries.push(e)); return } } diff --git a/src/librustdoc/passes.rs b/src/librustdoc/passes.rs index eeccc3303ebfe..15fe801d1807a 100644 --- a/src/librustdoc/passes.rs +++ b/src/librustdoc/passes.rs @@ -298,7 +298,7 @@ pub fn unindent(s: &str) -> String { let lines = s.lines_any().collect:: >(); let mut saw_first_line = false; let mut saw_second_line = false; - let min_indent = lines.iter().fold(uint::MAX, |min_indent, line| { + let min_indent = lines.iter().fold(uint::MAX, ref |min_indent, line| { // After we see the first non-whitespace line, look at // the line we have. If it is not whitespace, and therefore @@ -324,7 +324,7 @@ pub fn unindent(s: &str) -> String { } else { saw_first_line = true; let mut spaces = 0; - line.chars().all(|char| { + line.chars().all(ref |char| { // Only comparing against space because I wouldn't // know what to do with mixed whitespace chars if char == ' ' { diff --git a/src/librustdoc/stability_summary.rs b/src/librustdoc/stability_summary.rs index bbcf38f495571..f693a0bfcc34c 100644 --- a/src/librustdoc/stability_summary.rs +++ b/src/librustdoc/stability_summary.rs @@ -145,15 +145,18 @@ fn summarize_item(item: &Item) -> (Counts, Option) { let mut counts = item_counts; let mut submodules = Vec::new(); - for (subcounts, submodule) in items.iter().filter(|i| visible(*i)) - .map(summarize_item) { + for (subcounts, submodule) in items.iter() + .filter(ref |i| visible(*i)) + .map(summarize_item) { counts = counts + subcounts; - submodule.map(|m| submodules.push(m)); + submodule.map(ref |m| submodules.push(m)); } submodules.sort(); (counts, Some(ModuleSummary { - name: item.name.as_ref().map_or("".to_string(), |n| n.clone()), + name: item.name + .as_ref() + .map_or("".to_string(), ref |n| n.clone()), counts: counts, submodules: submodules, })) diff --git a/src/librustdoc/visit_ast.rs b/src/librustdoc/visit_ast.rs index b67b3c394d6f4..8fc96061a48f7 100644 --- a/src/librustdoc/visit_ast.rs +++ b/src/librustdoc/visit_ast.rs @@ -74,7 +74,7 @@ impl<'a> RustdocVisitor<'a> { None); // attach the crate's exported macros to the top-level module: self.module.macros = krate.exported_macros.iter() - .map(|it| self.visit_macro(&**it)).collect(); + .map(ref |it| self.visit_macro(&**it)).collect(); self.module.is_crate = true; } @@ -88,9 +88,9 @@ impl<'a> RustdocVisitor<'a> { name: item.ident, vis: item.vis, stab: self.stability(item.id), - attrs: item.attrs.iter().map(|x| *x).collect(), + attrs: item.attrs.iter().map(ref |x| *x).collect(), generics: generics.clone(), - fields: sd.fields.iter().map(|x| (*x).clone()).collect(), + fields: sd.fields.iter().map(ref |x| (*x).clone()).collect(), whence: item.span } } @@ -130,7 +130,7 @@ impl<'a> RustdocVisitor<'a> { id: item.id, vis: item.vis, stab: self.stability(item.id), - attrs: item.attrs.iter().map(|x| *x).collect(), + attrs: item.attrs.iter().map(ref |x| *x).collect(), decl: fd.clone(), name: item.ident, whence: item.span, @@ -163,10 +163,10 @@ impl<'a> RustdocVisitor<'a> { if item.vis != ast::Public { return om.view_items.push(item.clone()); } - let please_inline = item.attrs.iter().any(|item| { + let please_inline = item.attrs.iter().any(ref |item| { match item.meta_item_list() { Some(list) => { - list.iter().any(|i| i.name().get() == "inline") + list.iter().any(ref |i| i.name().get() == "inline") } None => false, } diff --git a/src/librustrt/c_str.rs b/src/librustrt/c_str.rs index d68fef306227a..c6b5e3f494ef2 100644 --- a/src/librustrt/c_str.rs +++ b/src/librustrt/c_str.rs @@ -530,7 +530,9 @@ mod tests { let ptr = input.as_ptr(); let expected = ["zero", "one"]; let mut it = expected.iter(); - let result = from_c_multistring(ptr as *const libc::c_char, None, |c| { + let result = from_c_multistring(ptr as *const libc::c_char, + None, + ref |c| { let cbytes = c.as_bytes_no_nul(); assert_eq!(cbytes, it.next().unwrap().as_bytes()); }); @@ -694,7 +696,7 @@ mod tests { } let mut c_: Option = None; - foo(|c| { + foo(ref |c| { c_ = Some(c.clone()); c.clone(); // force a copy, reading the memory @@ -735,7 +737,7 @@ mod bench { Mary had a little lamb, Little lamb"; fn bench_to_string(b: &mut Bencher, s: &str) { - b.iter(|| { + b.iter(ref || { let c_str = s.to_c_str(); check(s, c_str.as_ptr()); }) @@ -757,7 +759,7 @@ mod bench { } fn bench_to_c_str_unchecked(b: &mut Bencher, s: &str) { - b.iter(|| { + b.iter(ref || { let c_str = unsafe { s.to_c_str_unchecked() }; check(s, c_str.as_ptr()) }) @@ -779,8 +781,8 @@ mod bench { } fn bench_with_c_str(b: &mut Bencher, s: &str) { - b.iter(|| { - s.with_c_str(|c_str_buf| check(s, c_str_buf)) + b.iter(ref || { + s.with_c_str(ref |c_str_buf| check(s, c_str_buf)) }) } @@ -800,9 +802,9 @@ mod bench { } fn bench_with_c_str_unchecked(b: &mut Bencher, s: &str) { - b.iter(|| { + b.iter(ref || { unsafe { - s.with_c_str_unchecked(|c_str_buf| check(s, c_str_buf)) + s.with_c_str_unchecked(ref |c_str_buf| check(s, c_str_buf)) } }) } diff --git a/src/librustrt/local_data.rs b/src/librustrt/local_data.rs index 6a0b599179c0c..140fb32b48713 100644 --- a/src/librustrt/local_data.rs +++ b/src/librustrt/local_data.rs @@ -605,7 +605,7 @@ mod tests { static key: Key = &Key; let _clear = ClearKey(key); key.replace(None); - b.iter(|| { + b.iter(ref || { key.replace(None) }); } @@ -615,7 +615,7 @@ mod tests { static key: Key = &Key; let _clear = ClearKey(key); key.replace(Some(1u)); - b.iter(|| { + b.iter(ref || { key.replace(Some(2)) }); } @@ -625,7 +625,7 @@ mod tests { static key: Key = &Key; let _clear = ClearKey(key); key.replace(Some(0u)); - b.iter(|| { + b.iter(ref || { let old = key.replace(None).unwrap(); let new = old + 1; key.replace(Some(new)) @@ -639,7 +639,7 @@ mod tests { for (i, key) in keys.iter().enumerate() { key.replace(Some(i)); } - b.iter(|| { + b.iter(ref || { let key: Key = &keys[99]; key.replace(Some(42)) }); @@ -652,7 +652,7 @@ mod tests { for (i, key) in keys.iter().enumerate() { key.replace(Some(i)); } - b.iter(|| { + b.iter(ref || { let key: Key = &keys[999]; key.replace(Some(42)) }); @@ -664,7 +664,7 @@ mod tests { static key: Key = &Key; let _clear = ClearKey(key); key.replace(Some(42)); - b.iter(|| { + b.iter(ref || { key.get() }); } @@ -676,7 +676,7 @@ mod tests { for (i, key) in keys.iter().enumerate() { key.replace(Some(i)); } - b.iter(|| { + b.iter(ref || { let key: Key = &keys[99]; key.get() }); @@ -689,7 +689,7 @@ mod tests { for (i, key) in keys.iter().enumerate() { key.replace(Some(i)); } - b.iter(|| { + b.iter(ref || { let key: Key = &keys[999]; key.get() }); diff --git a/src/librustrt/local_heap.rs b/src/librustrt/local_heap.rs index 273505c416a3c..35423803399f3 100644 --- a/src/librustrt/local_heap.rs +++ b/src/librustrt/local_heap.rs @@ -122,7 +122,7 @@ impl LocalHeap { // // In this pass, nothing gets freed, so it does not matter whether // we read the next field before or after the callback. - self.each_live_alloc(true, |_, alloc| { + self.each_live_alloc(true, ref |_, alloc| { n_total_boxes += 1; (*alloc).ref_count = RC_IMMORTAL; }); @@ -335,11 +335,11 @@ mod bench { #[bench] fn alloc_managed_small(b: &mut Bencher) { - b.iter(|| { box(GC) 10i }); + b.iter(ref || { box(GC) 10i }); } #[bench] fn alloc_managed_big(b: &mut Bencher) { - b.iter(|| { box(GC) ([10i, ..1000]) }); + b.iter(ref || { box(GC) ([10i, ..1000]) }); } } diff --git a/src/librustuv/access.rs b/src/librustuv/access.rs index 9bd8af6419e0b..273e7675c11aa 100644 --- a/src/librustuv/access.rs +++ b/src/librustuv/access.rs @@ -57,7 +57,7 @@ impl Access { if inner.held { let t: Box = Local::take(); - t.deschedule(1, |task| { + t.deschedule(1, ref |task| { inner.queue.push((task, token)); Ok(()) }); diff --git a/src/librustuv/addrinfo.rs b/src/librustuv/addrinfo.rs index 6eaab1c096170..68a2e964dfac8 100644 --- a/src/librustuv/addrinfo.rs +++ b/src/librustuv/addrinfo.rs @@ -55,7 +55,7 @@ impl GetAddrInfoRequest { None => (None, null()) }; - let hint = hints.map(|hint| { + let hint = hints.map(ref |hint| { libc::addrinfo { ai_flags: 0, ai_family: hint.family as c_int, @@ -67,7 +67,7 @@ impl GetAddrInfoRequest { ai_next: mut_null(), } }); - let hint_ptr = hint.as_ref().map_or(null(), |x| { + let hint_ptr = hint.as_ref().map_or(null(), ref |x| { x as *const libc::addrinfo }); let mut req = Request::new(uvll::UV_GETADDRINFO); @@ -81,7 +81,7 @@ impl GetAddrInfoRequest { req.defuse(); // uv callback now owns this request let mut cx = Ctx { slot: None, status: 0, addrinfo: None }; - wait_until_woken_after(&mut cx.slot, loop_, || { + wait_until_woken_after(&mut cx.slot, loop_, ref || { req.set_data(&mut cx); }); diff --git a/src/librustuv/file.rs b/src/librustuv/file.rs index f42f42d211160..275790b7e512d 100644 --- a/src/librustuv/file.rs +++ b/src/librustuv/file.rs @@ -39,18 +39,18 @@ impl FsRequest { pub fn open(io: &mut UvIoFactory, path: &CString, flags: int, mode: int) -> Result { - execute(|req, cb| unsafe { + execute(ref |req, cb| unsafe { uvll::uv_fs_open(io.uv_loop(), req, path.as_ptr(), flags as c_int, mode as c_int, cb) - }).map(|req| + }).map(ref |req| FileWatcher::new(io, req.get_result() as c_int, rtio::CloseSynchronously) ) } pub fn unlink(loop_: &Loop, path: &CString) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_unlink(loop_.handle, req, path.as_ptr(), cb) }) @@ -59,23 +59,23 @@ impl FsRequest { pub fn lstat(loop_: &Loop, path: &CString) -> Result { - execute(|req, cb| unsafe { + execute(ref |req, cb| unsafe { uvll::uv_fs_lstat(loop_.handle, req, path.as_ptr(), cb) - }).map(|req| req.mkstat()) + }).map(ref |req| req.mkstat()) } pub fn stat(loop_: &Loop, path: &CString) -> Result { - execute(|req, cb| unsafe { + execute(ref |req, cb| unsafe { uvll::uv_fs_stat(loop_.handle, req, path.as_ptr(), cb) - }).map(|req| req.mkstat()) + }).map(ref |req| req.mkstat()) } pub fn fstat(loop_: &Loop, fd: c_int) -> Result { - execute(|req, cb| unsafe { + execute(ref |req, cb| unsafe { uvll::uv_fs_fstat(loop_.handle, req, fd, cb) - }).map(|req| req.mkstat()) + }).map(ref |req| req.mkstat()) } pub fn write(loop_: &Loop, fd: c_int, buf: &[u8], offset: i64) @@ -97,9 +97,9 @@ impl FsRequest { base: buf.slice_from(written as uint).as_ptr() as *mut _, len: (buf.len() - written) as uvll::uv_buf_len_t, }; - match execute(|req, cb| unsafe { + match execute(ref |req, cb| unsafe { uvll::uv_fs_write(loop_.handle, req, fd, &uvbuf, 1, offset, cb) - }).map(|req| req.get_result()) { + }).map(ref |req| req.get_result()) { Err(e) => return Err(e), Ok(n) => { written += n as uint; } } @@ -110,13 +110,13 @@ impl FsRequest { pub fn read(loop_: &Loop, fd: c_int, buf: &mut [u8], offset: i64) -> Result { - execute(|req, cb| unsafe { + execute(ref |req, cb| unsafe { let mut uvbuf = uvll::uv_buf_t { base: buf.as_mut_ptr(), len: buf.len() as uvll::uv_buf_len_t, }; uvll::uv_fs_read(loop_.handle, req, fd, &mut uvbuf, 1, offset, cb) - }).map(|req| { + }).map(ref |req| { req.get_result() as int }) } @@ -124,14 +124,14 @@ impl FsRequest { pub fn mkdir(loop_: &Loop, path: &CString, mode: c_int) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_mkdir(loop_.handle, req, path.as_ptr(), mode, cb) }) } pub fn rmdir(loop_: &Loop, path: &CString) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_rmdir(loop_.handle, req, path.as_ptr(), cb) }) @@ -140,7 +140,7 @@ impl FsRequest { pub fn rename(loop_: &Loop, path: &CString, to: &CString) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_rename(loop_.handle, req, path.as_ptr(), @@ -152,7 +152,7 @@ impl FsRequest { pub fn chmod(loop_: &Loop, path: &CString, mode: c_int) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_chmod(loop_.handle, req, path.as_ptr(), mode, cb) }) @@ -161,16 +161,16 @@ impl FsRequest { pub fn readdir(loop_: &Loop, path: &CString, flags: c_int) -> Result, UvError> { - execute(|req, cb| unsafe { + execute(ref |req, cb| unsafe { uvll::uv_fs_readdir(loop_.handle, req, path.as_ptr(), flags, cb) - }).map(|req| unsafe { + }).map(ref |req| unsafe { let mut paths = vec!(); let path = CString::new(path.as_ptr(), false); let parent = Path::new(path); let _ = c_str::from_c_multistring(req.get_ptr() as *const libc::c_char, Some(req.get_result() as uint), - |rel| { + ref |rel| { let p = rel.as_bytes(); paths.push(parent.join(p.slice_to(rel.len())).to_c_str()); }); @@ -179,10 +179,10 @@ impl FsRequest { } pub fn readlink(loop_: &Loop, path: &CString) -> Result { - execute(|req, cb| unsafe { + execute(ref |req, cb| unsafe { uvll::uv_fs_readlink(loop_.handle, req, path.as_ptr(), cb) - }).map(|req| { + }).map(ref |req| { // Be sure to clone the cstring so we get an independently owned // allocation to work with and return. unsafe { @@ -194,7 +194,7 @@ impl FsRequest { pub fn chown(loop_: &Loop, path: &CString, uid: int, gid: int) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_chown(loop_.handle, req, path.as_ptr(), uid as uvll::uv_uid_t, @@ -206,7 +206,7 @@ impl FsRequest { pub fn truncate(loop_: &Loop, file: c_int, offset: i64) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_ftruncate(loop_.handle, req, file, offset, cb) }) } @@ -214,7 +214,7 @@ impl FsRequest { pub fn link(loop_: &Loop, src: &CString, dst: &CString) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_link(loop_.handle, req, src.as_ptr(), dst.as_ptr(), @@ -225,7 +225,7 @@ impl FsRequest { pub fn symlink(loop_: &Loop, src: &CString, dst: &CString) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_symlink(loop_.handle, req, src.as_ptr(), dst.as_ptr(), @@ -234,13 +234,13 @@ impl FsRequest { } pub fn fsync(loop_: &Loop, fd: c_int) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_fsync(loop_.handle, req, fd, cb) }) } pub fn datasync(loop_: &Loop, fd: c_int) -> Result<(), UvError> { - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_fdatasync(loop_.handle, req, fd, cb) }) } @@ -251,7 +251,7 @@ impl FsRequest { // libuv takes seconds let atime = atime as libc::c_double / 1000.0; let mtime = mtime as libc::c_double / 1000.0; - execute_nop(|req, cb| unsafe { + execute_nop(ref |req, cb| unsafe { uvll::uv_fs_utime(loop_.handle, req, path.as_ptr(), atime, mtime, cb) }) @@ -322,7 +322,7 @@ fn execute(f: |*mut uvll::uv_fs_t, uvll::uv_fs_cb| -> c_int) req.fired = true; let mut slot = None; let loop_ = unsafe { uvll::get_loop_from_fs_req(req.req) }; - wait_until_woken_after(&mut slot, &Loop::wrap(loop_), || { + wait_until_woken_after(&mut slot, &Loop::wrap(loop_), ref || { unsafe { uvll::set_data_for_req(req.req, &mut slot) } }); match req.get_result() { diff --git a/src/librustuv/lib.rs b/src/librustuv/lib.rs index dd80ab3ee78a1..95be394731647 100644 --- a/src/librustuv/lib.rs +++ b/src/librustuv/lib.rs @@ -181,7 +181,7 @@ pub trait UvHandle { uvll::set_data_for_uv_handle(self.uv_handle(), ptr::mut_null::<()>()); - wait_until_woken_after(&mut slot, &self.uv_loop(), || { + wait_until_woken_after(&mut slot, &self.uv_loop(), ref || { uvll::set_data_for_uv_handle(self.uv_handle(), &mut slot); }) } @@ -248,7 +248,7 @@ fn wait_until_woken_after(slot: *mut Option, assert!((*slot).is_none()); let task: Box = Local::take(); loop_.modify_blockers(1); - task.deschedule(1, |task| { + task.deschedule(1, ref |task| { *slot = Some(task); f(); Ok(()) @@ -259,7 +259,7 @@ fn wait_until_woken_after(slot: *mut Option, fn wakeup(slot: &mut Option) { assert!(slot.is_some()); - let _ = slot.take_unwrap().wake().map(|t| t.reawaken()); + let _ = slot.take_unwrap().wake().map(ref |t| t.reawaken()); } pub struct Request { diff --git a/src/librustuv/net.rs b/src/librustuv/net.rs index 0da8d0d2108ea..ae05597421642 100644 --- a/src/librustuv/net.rs +++ b/src/librustuv/net.rs @@ -560,7 +560,7 @@ impl rtio::RtioUdpSocket for UdpWatcher { result: None, }; let handle = self.handle; - wait_until_woken_after(&mut cx.task, &loop_, || { + wait_until_woken_after(&mut cx.task, &loop_, ref || { unsafe { uvll::set_data_for_uv_handle(handle, &mut cx) } }); match cx.result.take_unwrap() { @@ -637,9 +637,9 @@ impl rtio::RtioUdpSocket for UdpWatcher { let mut cx = UdpSendCtx { result: uvll::ECANCELED, data: data, udp: self as *mut _ }; - wait_until_woken_after(&mut self.blocked_sender, &loop_, || { - req.set_data(&mut cx); - }); + wait_until_woken_after(&mut self.blocked_sender, + &loop_, + ref || req.set_data(&mut cx)); if cx.result != uvll::ECANCELED { return match cx.result { @@ -680,7 +680,7 @@ impl rtio::RtioUdpSocket for UdpWatcher { fn join_multicast(&mut self, multi: rtio::IpAddr) -> Result<(), IoError> { let _m = self.fire_homing_missile(); status_to_io_result(unsafe { - multi.to_string().with_c_str(|m_addr| { + multi.to_string().with_c_str(ref |m_addr| { uvll::uv_udp_set_membership(self.handle, m_addr, ptr::null(), uvll::UV_JOIN_GROUP) @@ -691,7 +691,7 @@ impl rtio::RtioUdpSocket for UdpWatcher { fn leave_multicast(&mut self, multi: rtio::IpAddr) -> Result<(), IoError> { let _m = self.fire_homing_missile(); status_to_io_result(unsafe { - multi.to_string().with_c_str(|m_addr| { + multi.to_string().with_c_str(ref |m_addr| { uvll::uv_udp_set_membership(self.handle, m_addr, ptr::null(), uvll::UV_LEAVE_GROUP) @@ -823,7 +823,7 @@ pub fn shutdown(handle: *mut uvll::uv_stream_t, loop_: &Loop) -> Result<(), IoEr req.defuse(); // uv callback now owns this request let mut cx = Ctx { slot: None, status: 0 }; - wait_until_woken_after(&mut cx.slot, loop_, || { + wait_until_woken_after(&mut cx.slot, loop_, ref || { req.set_data(&mut cx); }); diff --git a/src/librustuv/process.rs b/src/librustuv/process.rs index 0486f376bc806..3877a58489b52 100644 --- a/src/librustuv/process.rs +++ b/src/librustuv/process.rs @@ -67,8 +67,8 @@ impl Process { } } - let ret = with_argv(cfg.program, cfg.args, |argv| { - with_env(cfg.env, |envp| { + let ret = with_argv(cfg.program, cfg.args, ref |argv| { + with_env(cfg.env, ref |envp| { let mut flags = 0; if cfg.uid.is_some() { flags |= uvll::PROCESS_SETUID; diff --git a/src/librustuv/stream.rs b/src/librustuv/stream.rs index c49e557a3237d..016f6b7e01e34 100644 --- a/src/librustuv/stream.rs +++ b/src/librustuv/stream.rs @@ -182,7 +182,7 @@ impl StreamWatcher { let loop_ = unsafe { uvll::get_loop_for_uv_handle(self.handle) }; wait_until_woken_after(&mut self.blocked_writer, - &Loop::wrap(loop_), || { + &Loop::wrap(loop_), ref || { req.set_data(&mut wcx); }); diff --git a/src/librustuv/timeout.rs b/src/librustuv/timeout.rs index 1caaf5e0fc75d..4b1e56545c8ae 100644 --- a/src/librustuv/timeout.rs +++ b/src/librustuv/timeout.rs @@ -239,7 +239,7 @@ impl ConnectCtx { } None => {} } - wait_until_woken_after(&mut self.task, &io.loop_, || { + wait_until_woken_after(&mut self.task, &io.loop_, ref || { let data = &self as *const _ as *mut ConnectCtx; match self.timer { Some(ref mut timer) => unsafe { timer.set_data(data) }, diff --git a/src/librustuv/timer.rs b/src/librustuv/timer.rs index f6c1cdd297754..0d9abd3b8b565 100644 --- a/src/librustuv/timer.rs +++ b/src/librustuv/timer.rs @@ -97,7 +97,7 @@ impl RtioTimer for TimerWatcher { let _f = ForbidUnwind::new("timer"); self.action = Some(WakeTask); - wait_until_woken_after(&mut self.blocker, &self.uv_loop(), || { + wait_until_woken_after(&mut self.blocker, &self.uv_loop(), ref || { self.start(timer_cb, msecs, 0); }); self.stop(); diff --git a/src/libsemver/lib.rs b/src/libsemver/lib.rs index 56c0f24509b8e..752836a76649e 100644 --- a/src/libsemver/lib.rs +++ b/src/libsemver/lib.rs @@ -208,13 +208,13 @@ fn expect(ch: Option, c: char) -> Option<()> { } fn parse_iter>(rdr: &mut T) -> Option { - let maybe_vers = take_num(rdr).and_then(|(major, ch)| { + let maybe_vers = take_num(rdr).and_then(ref |(major, ch)| { expect(ch, '.').and_then(|_| Some(major)) - }).and_then(|major| { + }).and_then(ref |major| { take_num(rdr).and_then(|(minor, ch)| { expect(ch, '.').and_then(|_| Some((major, minor))) }) - }).and_then(|(major, minor)| { + }).and_then(ref |(major, minor)| { take_num(rdr).and_then(|(patch, ch)| { Some((major, minor, patch, ch)) }) diff --git a/src/libserialize/base64.rs b/src/libserialize/base64.rs index f85f3a43974b9..06449953b5985 100644 --- a/src/libserialize/base64.rs +++ b/src/libserialize/base64.rs @@ -367,7 +367,7 @@ mod tests { pub fn bench_to_base64(b: &mut Bencher) { let s = "イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム \ ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン"; - b.iter(|| { + b.iter(ref || { s.as_bytes().to_base64(STANDARD); }); b.bytes = s.len() as u64; @@ -378,7 +378,7 @@ mod tests { let s = "イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム \ ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン"; let sb = s.as_bytes().to_base64(STANDARD); - b.iter(|| { + b.iter(ref || { sb.as_slice().from_base64().unwrap(); }); b.bytes = sb.len() as u64; diff --git a/src/libserialize/hex.rs b/src/libserialize/hex.rs index f33ecb5f19bc8..b5d1c763e3db5 100644 --- a/src/libserialize/hex.rs +++ b/src/libserialize/hex.rs @@ -200,7 +200,7 @@ mod tests { pub fn bench_to_hex(b: &mut Bencher) { let s = "イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム \ ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン"; - b.iter(|| { + b.iter(ref || { s.as_bytes().to_hex(); }); b.bytes = s.len() as u64; @@ -211,7 +211,7 @@ mod tests { let s = "イロハニホヘト チリヌルヲ ワカヨタレソ ツネナラム \ ウヰノオクヤマ ケフコエテ アサキユメミシ ヱヒモセスン"; let sb = s.as_bytes().to_hex(); - b.iter(|| { + b.iter(ref || { sb.as_slice().from_hex().unwrap(); }); b.bytes = sb.len() as u64; diff --git a/src/libserialize/json.rs b/src/libserialize/json.rs index 51b8985e655a5..d5926eeb81d32 100644 --- a/src/libserialize/json.rs +++ b/src/libserialize/json.rs @@ -1675,7 +1675,7 @@ impl> Parser { } fn parse_ident(&mut self, ident: &str, value: JsonEvent) -> JsonEvent { - if ident.chars().all(|c| Some(c) == self.next_char()) { + if ident.chars().all(ref |c| Some(c) == self.next_char()) { self.bump(); value } else { @@ -1937,7 +1937,9 @@ impl ::Decoder for Decoder { } }; let idx = match names.iter() - .position(|n| str::eq_slice(*n, name.as_slice())) { + .position(ref |n| { + str::eq_slice(*n, name.as_slice()) + }) { Some(idx) => idx, None => return Err(UnknownVariantError(name)) }; @@ -2420,14 +2422,14 @@ mod tests { fn test_write_enum() { let animal = Dog; assert_eq!( - with_str_writer(|writer| { + with_str_writer(ref |writer| { let mut encoder = Encoder::new(writer); animal.encode(&mut encoder).unwrap(); }), "\"Dog\"".to_string() ); assert_eq!( - with_str_writer(|writer| { + with_str_writer(ref |writer| { let mut encoder = PrettyEncoder::new(writer); animal.encode(&mut encoder).unwrap(); }), @@ -2436,14 +2438,14 @@ mod tests { let animal = Frog("Henry".to_string(), 349); assert_eq!( - with_str_writer(|writer| { + with_str_writer(ref |writer| { let mut encoder = Encoder::new(writer); animal.encode(&mut encoder).unwrap(); }), "{\"variant\":\"Frog\",\"fields\":[\"Henry\",349]}".to_string() ); assert_eq!( - with_str_writer(|writer| { + with_str_writer(ref |writer| { let mut encoder = PrettyEncoder::new(writer); animal.encode(&mut encoder).unwrap(); }), @@ -2459,14 +2461,14 @@ mod tests { #[test] fn test_write_some() { let value = Some("jodhpurs".to_string()); - let s = with_str_writer(|writer| { + let s = with_str_writer(ref |writer| { let mut encoder = Encoder::new(writer); value.encode(&mut encoder).unwrap(); }); assert_eq!(s, "\"jodhpurs\"".to_string()); let value = Some("jodhpurs".to_string()); - let s = with_str_writer(|writer| { + let s = with_str_writer(ref |writer| { let mut encoder = PrettyEncoder::new(writer); value.encode(&mut encoder).unwrap(); }); @@ -2476,13 +2478,13 @@ mod tests { #[test] fn test_write_none() { let value: Option = None; - let s = with_str_writer(|writer| { + let s = with_str_writer(ref |writer| { let mut encoder = Encoder::new(writer); value.encode(&mut encoder).unwrap(); }); assert_eq!(s, "null".to_string()); - let s = with_str_writer(|writer| { + let s = with_str_writer(ref |writer| { let mut encoder = Encoder::new(writer); value.encode(&mut encoder).unwrap(); }); @@ -3326,7 +3328,7 @@ mod tests { #[bench] fn bench_streaming_small(b: &mut Bencher) { - b.iter( || { + b.iter(ref || { let mut parser = Parser::new( r#"{ "a": 1.0, @@ -3347,7 +3349,7 @@ mod tests { } #[bench] fn bench_small(b: &mut Bencher) { - b.iter( || { + b.iter(ref || { let _ = from_str(r#"{ "a": 1.0, "b": [ diff --git a/src/libserialize/serialize.rs b/src/libserialize/serialize.rs index bbaac7a96e9ee..5b01f97e62439 100644 --- a/src/libserialize/serialize.rs +++ b/src/libserialize/serialize.rs @@ -580,9 +580,9 @@ pub trait EncoderHelpers { impl> EncoderHelpers for S { fn emit_from_vec(&mut self, v: &[T], f: |&mut S, &T| -> Result<(), E>) -> Result<(), E> { - self.emit_seq(v.len(), |this| { + self.emit_seq(v.len(), ref |this| { for (i, e) in v.iter().enumerate() { - try!(this.emit_seq_elt(i, |this| { + try!(this.emit_seq_elt(i, ref |this| { f(this, e) })); } @@ -597,10 +597,10 @@ pub trait DecoderHelpers { impl> DecoderHelpers for D { fn read_to_vec(&mut self, f: |&mut D| -> Result) -> Result, E> { - self.read_seq(|this, len| { + self.read_seq(ref |this, len| { let mut v = Vec::with_capacity(len); for i in range(0, len) { - v.push(try!(this.read_seq_elt(i, |this| f(this)))); + v.push(try!(this.read_seq_elt(i, ref |this| f(this)))); } Ok(v) }) diff --git a/src/libstd/collections/hashmap.rs b/src/libstd/collections/hashmap.rs index b8f8bd41a2d9d..d5020a8d8514a 100644 --- a/src/libstd/collections/hashmap.rs +++ b/src/libstd/collections/hashmap.rs @@ -2994,7 +2994,7 @@ mod bench { fn new_drop(b : &mut Bencher) { use super::HashMap; - b.iter(|| { + b.iter(ref || { let m : HashMap = HashMap::new(); assert_eq!(m.len(), 0); }) @@ -3004,7 +3004,7 @@ mod bench { fn new_insert_drop(b : &mut Bencher) { use super::HashMap; - b.iter(|| { + b.iter(ref || { let mut m = HashMap::new(); m.insert(0i, 0i); assert_eq!(m.len(), 1); @@ -3023,7 +3023,7 @@ mod bench { let mut k = 1001; - b.iter(|| { + b.iter(ref || { m.insert(k, k); k += 1; }); @@ -3039,7 +3039,7 @@ mod bench { m.insert(i, i); } - b.iter(|| { + b.iter(ref || { for i in range_inclusive(1i, 1000) { m.contains_key(&i); } @@ -3056,7 +3056,7 @@ mod bench { m.insert(i, i); } - b.iter(|| { + b.iter(ref || { for i in range_inclusive(1001i, 2000) { m.contains_key(&i); } @@ -3075,7 +3075,7 @@ mod bench { let mut k = 1i; - b.iter(|| { + b.iter(ref || { m.pop(&k); m.insert(k + 1000, k + 1000); k += 1; @@ -3094,7 +3094,7 @@ mod bench { let mut k = 1i; - b.iter(|| { + b.iter(ref || { m.find(&(k + 400)); m.find(&(k + 2000)); m.pop(&k); diff --git a/src/libstd/dynamic_lib.rs b/src/libstd/dynamic_lib.rs index fb951d45c4211..1c94d7c56874d 100644 --- a/src/libstd/dynamic_lib.rs +++ b/src/libstd/dynamic_lib.rs @@ -64,7 +64,7 @@ impl DynamicLibrary { -> Result { unsafe { let mut filename = filename; - let maybe_library = dl::check_for_errors_in(|| { + let maybe_library = dl::check_for_errors_in(ref || { match filename.take() { Some(name) => dl::open_external(name), None => dl::open_internal() diff --git a/src/libstd/io/buffered.rs b/src/libstd/io/buffered.rs index a9b0b33c59ad9..6536160f64c0f 100644 --- a/src/libstd/io/buffered.rs +++ b/src/libstd/io/buffered.rs @@ -607,21 +607,21 @@ mod test { #[bench] fn bench_buffered_reader(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { BufferedReader::new(NullStream) }); } #[bench] fn bench_buffered_writer(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { BufferedWriter::new(NullStream) }); } #[bench] fn bench_buffered_stream(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { BufferedStream::new(NullStream); }); } diff --git a/src/libstd/io/extensions.rs b/src/libstd/io/extensions.rs index 12caa7158658e..b80f616883f5e 100644 --- a/src/libstd/io/extensions.rs +++ b/src/libstd/io/extensions.rs @@ -516,7 +516,7 @@ mod bench { let data = Vec::from_fn($stride*100+$start_index, |i| i as u8); let mut sum = 0u64; - $b.iter(|| { + $b.iter(ref || { let mut i = $start_index; while i < data.len() { sum += u64_from_be_bytes(data.as_slice(), i, $size); diff --git a/src/libstd/io/fs.rs b/src/libstd/io/fs.rs index 725d3b10def85..64093e4b229fa 100644 --- a/src/libstd/io/fs.rs +++ b/src/libstd/io/fs.rs @@ -631,7 +631,7 @@ pub fn rmdir(path: &Path) -> IoResult<()> { /// let contents = try!(fs::readdir(dir)); /// for entry in contents.iter() { /// if entry.is_dir() { -/// try!(visit_dirs(entry, |p| cb(p))); +/// try!(visit_dirs(entry, ref |p| cb(p))); /// } else { /// cb(entry); /// } @@ -682,8 +682,11 @@ impl Iterator for Directories { if path.is_dir() { let result = readdir(&path) .update_err("couldn't advance Directories iterator", - |e| format!("{}; path={}", - e, path.display())); + ref |e| { + format!("{}; path={}", + e, + path.display()) + }); match result { Ok(dirs) => { self.stack.push_all_move(dirs); } diff --git a/src/libstd/io/mem.rs b/src/libstd/io/mem.rs index ea9d08171e6ce..cbd887316e5c0 100644 --- a/src/libstd/io/mem.rs +++ b/src/libstd/io/mem.rs @@ -550,7 +550,7 @@ mod test { let src: Vec = Vec::from_elem(len, 5); b.bytes = (times * len) as u64; - b.iter(|| { + b.iter(ref || { let mut wr = MemWriter::new(); for _ in range(0, times) { wr.write(src.as_slice()).unwrap(); @@ -558,7 +558,7 @@ mod test { let v = wr.unwrap(); assert_eq!(v.len(), times * len); - assert!(v.iter().all(|x| *x == 5)); + assert!(v.iter().all(ref |x| *x == 5)); }); } @@ -604,7 +604,7 @@ mod test { #[bench] fn bench_mem_reader(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let buf = Vec::from_slice([5 as u8, ..100]); { let mut rdr = MemReader::new(buf); @@ -619,7 +619,7 @@ mod test { #[bench] fn bench_buf_writer(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let mut buf = [0 as u8, ..100]; { let mut wr = BufWriter::new(buf); @@ -633,7 +633,7 @@ mod test { #[bench] fn bench_buf_reader(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { let buf = [5 as u8, ..100]; { let mut rdr = BufReader::new(buf); diff --git a/src/libstd/io/signal.rs b/src/libstd/io/signal.rs index 1d882bdc0ad9e..aec817a46bdd4 100644 --- a/src/libstd/io/signal.rs +++ b/src/libstd/io/signal.rs @@ -134,7 +134,7 @@ impl Listener { if self.handles.iter().any(|&(sig, _)| sig == signum) { return Ok(()); // self is already listening to signum, so succeed } - match LocalIo::maybe_raise(|io| { + match LocalIo::maybe_raise(ref |io| { io.signal(signum as int, box SignalCallback { signum: signum, tx: self.tx.clone(), diff --git a/src/libstd/num/mod.rs b/src/libstd/num/mod.rs index 27ee1e3ce3bb3..84d8cdc023b24 100644 --- a/src/libstd/num/mod.rs +++ b/src/libstd/num/mod.rs @@ -786,6 +786,6 @@ mod bench { #[bench] fn bench_pow_function(b: &mut Bencher) { let v = Vec::from_fn(1024u, |n| n); - b.iter(|| {v.iter().fold(0u, |old, new| num::pow(old, *new));}); + b.iter(ref || {v.iter().fold(0u, |old, new| num::pow(old, *new));}); } } diff --git a/src/libstd/num/strconv.rs b/src/libstd/num/strconv.rs index 407c8ea61d914..7dda65dd79f27 100644 --- a/src/libstd/num/strconv.rs +++ b/src/libstd/num/strconv.rs @@ -479,7 +479,7 @@ pub fn float_to_str_bytes_common unreachable!() } as u8); - int_to_str_bytes_common(exp, 10, sign, |c| buf.push(c)); + int_to_str_bytes_common(exp, 10, sign, ref |c| buf.push(c)); } } @@ -824,31 +824,31 @@ mod bench { #[bench] fn to_str_bin(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(2); }) + b.iter(ref || { rng.gen::().to_str_radix(2); }) } #[bench] fn to_str_oct(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(8); }) + b.iter(ref || { rng.gen::().to_str_radix(8); }) } #[bench] fn to_str_dec(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(10); }) + b.iter(ref || { rng.gen::().to_str_radix(10); }) } #[bench] fn to_str_hex(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(16); }) + b.iter(ref || { rng.gen::().to_str_radix(16); }) } #[bench] fn to_str_base_36(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(36); }) + b.iter(ref || { rng.gen::().to_str_radix(36); }) } } @@ -860,31 +860,31 @@ mod bench { #[bench] fn to_str_bin(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(2); }) + b.iter(ref || { rng.gen::().to_str_radix(2); }) } #[bench] fn to_str_oct(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(8); }) + b.iter(ref || { rng.gen::().to_str_radix(8); }) } #[bench] fn to_str_dec(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(10); }) + b.iter(ref || { rng.gen::().to_str_radix(10); }) } #[bench] fn to_str_hex(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(16); }) + b.iter(ref || { rng.gen::().to_str_radix(16); }) } #[bench] fn to_str_base_36(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { rng.gen::().to_str_radix(36); }) + b.iter(ref || { rng.gen::().to_str_radix(36); }) } } @@ -896,7 +896,7 @@ mod bench { #[bench] fn float_to_string(b: &mut Bencher) { let mut rng = weak_rng(); - b.iter(|| { f64::to_string(rng.gen()); }) + b.iter(ref || { f64::to_string(rng.gen()); }) } } } diff --git a/src/libstd/os.rs b/src/libstd/os.rs index d8eb0979190d4..7485d5fde8d2f 100644 --- a/src/libstd/os.rs +++ b/src/libstd/os.rs @@ -282,7 +282,7 @@ pub fn env_as_bytes() -> Vec<(Vec,Vec)> { os::last_os_error()); } let mut result = Vec::new(); - ptr::array_each(environ, |e| { + ptr::array_each(environ, ref |e| { let env_pair = Vec::from_slice(CString::new(e, false).as_bytes_no_nul()); result.push(env_pair); diff --git a/src/libstd/path/posix.rs b/src/libstd/path/posix.rs index 0a7817c3e0047..e4035da26f092 100644 --- a/src/libstd/path/posix.rs +++ b/src/libstd/path/posix.rs @@ -1258,7 +1258,7 @@ mod bench { #[bench] fn join_home_dir(b: &mut Bencher) { let posix_path = Path::new("/"); - b.iter(|| { + b.iter(ref || { posix_path.join("home"); }); } @@ -1266,7 +1266,7 @@ mod bench { #[bench] fn join_abs_path_home_dir(b: &mut Bencher) { let posix_path = Path::new("/"); - b.iter(|| { + b.iter(ref || { posix_path.join("/home"); }); } @@ -1274,7 +1274,7 @@ mod bench { #[bench] fn join_many_home_dir(b: &mut Bencher) { let posix_path = Path::new("/"); - b.iter(|| { + b.iter(ref || { posix_path.join_many(&["home"]); }); } @@ -1282,7 +1282,7 @@ mod bench { #[bench] fn join_many_abs_path_home_dir(b: &mut Bencher) { let posix_path = Path::new("/"); - b.iter(|| { + b.iter(ref || { posix_path.join_many(&["/home"]); }); } @@ -1290,7 +1290,7 @@ mod bench { #[bench] fn push_home_dir(b: &mut Bencher) { let mut posix_path = Path::new("/"); - b.iter(|| { + b.iter(ref || { posix_path.push("home"); }); } @@ -1298,7 +1298,7 @@ mod bench { #[bench] fn push_abs_path_home_dir(b: &mut Bencher) { let mut posix_path = Path::new("/"); - b.iter(|| { + b.iter(ref || { posix_path.push("/home"); }); } @@ -1306,7 +1306,7 @@ mod bench { #[bench] fn push_many_home_dir(b: &mut Bencher) { let mut posix_path = Path::new("/"); - b.iter(|| { + b.iter(ref || { posix_path.push_many(&["home"]); }); } @@ -1314,7 +1314,7 @@ mod bench { #[bench] fn push_many_abs_path_home_dir(b: &mut Bencher) { let mut posix_path = Path::new("/"); - b.iter(|| { + b.iter(ref || { posix_path.push_many(&["/home"]); }); } @@ -1322,7 +1322,7 @@ mod bench { #[bench] fn ends_with_path_home_dir(b: &mut Bencher) { let posix_home_path = Path::new("/home"); - b.iter(|| { + b.iter(ref || { posix_home_path.ends_with_path(&Path::new("home")); }); } @@ -1330,7 +1330,7 @@ mod bench { #[bench] fn ends_with_path_missmatch_jome_home(b: &mut Bencher) { let posix_home_path = Path::new("/home"); - b.iter(|| { + b.iter(ref || { posix_home_path.ends_with_path(&Path::new("jome")); }); } @@ -1340,7 +1340,7 @@ mod bench { let path = Path::new("/home/1/2/3/4/5/6/7/8/9"); let mut sub = path.clone(); sub.pop(); - b.iter(|| { + b.iter(ref || { path.is_ancestor_of(&sub); }); } @@ -1350,7 +1350,7 @@ mod bench { let path = Path::new("/a/b/c"); let mut other = path.clone(); other.pop(); - b.iter(|| { + b.iter(ref || { path.path_relative_from(&other); }); } @@ -1361,7 +1361,7 @@ mod bench { let mut other = path.clone(); other.pop(); other.push("d"); - b.iter(|| { + b.iter(ref || { path.path_relative_from(&other); }); } @@ -1371,7 +1371,7 @@ mod bench { let path = Path::new("/a/b"); let mut other = path.clone(); other.push("c"); - b.iter(|| { + b.iter(ref || { path.path_relative_from(&other); }); } diff --git a/src/libstd/path/windows.rs b/src/libstd/path/windows.rs index 8402d751bf2c8..20e622fcf761d 100644 --- a/src/libstd/path/windows.rs +++ b/src/libstd/path/windows.rs @@ -1044,7 +1044,7 @@ fn parse_prefix<'a>(mut path: &'a str) -> Option { fn parse_two_comps<'a>(mut path: &'a str, f: |char| -> bool) -> Option<(uint, uint)> { - let idx_a = match path.find(|x| f(x)) { + let idx_a = match path.find(ref |x| f(x)) { None => return None, Some(x) => x }; diff --git a/src/libstd/rand/mod.rs b/src/libstd/rand/mod.rs index c02a97e09a41e..0a326f361c527 100644 --- a/src/libstd/rand/mod.rs +++ b/src/libstd/rand/mod.rs @@ -579,7 +579,7 @@ mod bench { #[bench] fn rand_xorshift(b: &mut Bencher) { let mut rng: XorShiftRng = OsRng::new().unwrap().gen(); - b.iter(|| { + b.iter(ref || { for _ in range(0, RAND_BENCH_N) { rng.gen::(); } @@ -590,7 +590,7 @@ mod bench { #[bench] fn rand_isaac(b: &mut Bencher) { let mut rng: IsaacRng = OsRng::new().unwrap().gen(); - b.iter(|| { + b.iter(ref || { for _ in range(0, RAND_BENCH_N) { rng.gen::(); } @@ -601,7 +601,7 @@ mod bench { #[bench] fn rand_isaac64(b: &mut Bencher) { let mut rng: Isaac64Rng = OsRng::new().unwrap().gen(); - b.iter(|| { + b.iter(ref || { for _ in range(0, RAND_BENCH_N) { rng.gen::(); } @@ -612,7 +612,7 @@ mod bench { #[bench] fn rand_std(b: &mut Bencher) { let mut rng = StdRng::new().unwrap(); - b.iter(|| { + b.iter(ref || { for _ in range(0, RAND_BENCH_N) { rng.gen::(); } @@ -624,7 +624,7 @@ mod bench { fn rand_shuffle_100(b: &mut Bencher) { let mut rng = weak_rng(); let x : &mut[uint] = [1,..100]; - b.iter(|| { + b.iter(ref || { rng.shuffle(x); }) } diff --git a/src/libsync/comm/oneshot.rs b/src/libsync/comm/oneshot.rs index 188bea83ac80f..b94f3e0a6e160 100644 --- a/src/libsync/comm/oneshot.rs +++ b/src/libsync/comm/oneshot.rs @@ -138,7 +138,7 @@ impl Packet { // like we're not empty, then immediately go through to `try_recv`. if self.state.load(atomic::SeqCst) == EMPTY { let t: Box = Local::take(); - t.deschedule(1, |task| { + t.deschedule(1, ref |task| { let n = unsafe { task.cast_to_uint() }; match self.state.compare_and_swap(EMPTY, n, atomic::SeqCst) { // Nothing on the channel, we legitimately block diff --git a/src/libsync/comm/select.rs b/src/libsync/comm/select.rs index 737a4bfe29916..e7b8171223bb3 100644 --- a/src/libsync/comm/select.rs +++ b/src/libsync/comm/select.rs @@ -182,7 +182,7 @@ impl Select { // sequentially until one fails. If one fails, then abort // immediately so we can go unblock on all the other receivers. let task: Box = Local::take(); - task.deschedule(amt, |task| { + task.deschedule(amt, ref |task| { // Prepare for the block let (i, handle) = iter.next().unwrap(); match (*handle).packet.start_selection(task) { diff --git a/src/libsync/comm/shared.rs b/src/libsync/comm/shared.rs index cb35bd8afb772..9f3c4c423d20e 100644 --- a/src/libsync/comm/shared.rs +++ b/src/libsync/comm/shared.rs @@ -230,7 +230,7 @@ impl Packet { } let task: Box = Local::take(); - task.deschedule(1, |task| { + task.deschedule(1, ref |task| { self.decrement(task) }); diff --git a/src/libsync/comm/stream.rs b/src/libsync/comm/stream.rs index 36fe335128e4d..c7094c98d8c0c 100644 --- a/src/libsync/comm/stream.rs +++ b/src/libsync/comm/stream.rs @@ -181,7 +181,7 @@ impl Packet { // Welp, our channel has no data. Deschedule the current task and // initiate the blocking protocol. let task: Box = Local::take(); - task.deschedule(1, |task| { + task.deschedule(1, ref |task| { self.decrement(task) }); diff --git a/src/libsync/comm/sync.rs b/src/libsync/comm/sync.rs index 1ee9fef191866..877f0d928c97b 100644 --- a/src/libsync/comm/sync.rs +++ b/src/libsync/comm/sync.rs @@ -452,7 +452,7 @@ impl Queue { task: None, next: 0 as *mut Node, }; - task.deschedule(1, |task| { + task.deschedule(1, ref |task| { node.task = Some(task); if self.tail.is_null() { self.head = &mut node as *mut Node; diff --git a/src/libsync/deque.rs b/src/libsync/deque.rs index e70a730dc3a13..14052f95a7234 100644 --- a/src/libsync/deque.rs +++ b/src/libsync/deque.rs @@ -170,7 +170,7 @@ impl BufferPool { fn free(&self, buf: Box>) { unsafe { let mut pool = self.pool.lock(); - match pool.iter().position(|v| v.size() > buf.size()) { + match pool.iter().position(ref |v| v.size() > buf.size()) { Some(i) => pool.insert(i, buf), None => pool.push(buf), } diff --git a/src/libsync/mutex.rs b/src/libsync/mutex.rs index 12de615a81b79..adeb3cb4f88bc 100644 --- a/src/libsync/mutex.rs +++ b/src/libsync/mutex.rs @@ -251,7 +251,7 @@ impl StaticMutex { // of lock stealing the lock, it's also possible for native/native // contention to hit this location, but as less common. let t: Box = Local::take(); - t.deschedule(1, |task| { + t.deschedule(1, ref |task| { let task = unsafe { task.cast_to_uint() }; // These accesses are protected by the respective native/green @@ -336,7 +336,7 @@ impl StaticMutex { } let mut node = q::Node::new(0); - t.deschedule(1, |task| { + t.deschedule(1, ref |task| { unsafe { node.data = task.cast_to_uint(); self.q.push(&mut node); diff --git a/src/libsync/one.rs b/src/libsync/one.rs index 4594345d2a3f6..b52abee42a5e4 100644 --- a/src/libsync/one.rs +++ b/src/libsync/one.rs @@ -130,9 +130,9 @@ mod test { fn smoke_once() { static mut o: Once = ONCE_INIT; let mut a = 0i; - unsafe { o.doit(|| a += 1); } + unsafe { o.doit(ref || a += 1); } assert_eq!(a, 1); - unsafe { o.doit(|| a += 1); } + unsafe { o.doit(ref || a += 1); } assert_eq!(a, 1); } diff --git a/src/libsync/raw.rs b/src/libsync/raw.rs index c42d567fc18ce..c43f66814c2fb 100644 --- a/src/libsync/raw.rs +++ b/src/libsync/raw.rs @@ -130,7 +130,7 @@ impl Sem { pub fn acquire(&self) { unsafe { let mut waiter_nobe = None; - self.with(|state| { + self.with(ref |state| { state.count -= 1; if state.count < 0 { // Create waiter nobe, enqueue ourself, and tell @@ -236,7 +236,7 @@ impl<'a> Condvar<'a> { let mut out_of_bounds = None; // Release lock, 'atomically' enqueuing ourselves in so doing. unsafe { - self.sem.with(|state| { + self.sem.with(ref |state| { if condvar_id < state.blocked.len() { // Drop the lock. state.count += 1; @@ -254,13 +254,16 @@ impl<'a> Condvar<'a> { // If deschedule checks start getting inserted anywhere, we can be // killed before or after enqueueing. - check_cvar_bounds(out_of_bounds, condvar_id, "cond.wait_on()", || { + check_cvar_bounds(out_of_bounds, + condvar_id, + "cond.wait_on()", + ref || { // Unconditionally "block". (Might not actually block if a // signaller already sent -- I mean 'unconditionally' in contrast // with acquire().) - (|| { + (ref || { let _ = wait_end.take_unwrap().recv(); - }).finally(|| { + }).finally(ref || { // Reacquire the condvar. match self.order { Just(lock) => { @@ -281,7 +284,7 @@ impl<'a> Condvar<'a> { unsafe { let mut out_of_bounds = None; let mut result = false; - self.sem.with(|state| { + self.sem.with(ref |state| { if condvar_id < state.blocked.len() { result = state.blocked[condvar_id].signal(); } else { @@ -303,7 +306,7 @@ impl<'a> Condvar<'a> { let mut out_of_bounds = None; let mut queue = None; unsafe { - self.sem.with(|state| { + self.sem.with(ref |state| { if condvar_id < state.blocked.len() { // To avoid :broadcast_heavy, we make a new waitqueue, // swap it out with the old one, and broadcast on the @@ -919,7 +922,7 @@ mod tests { fn access_shared(sharedstate: &mut int, x: &Arc, mode: RWLockMode, n: uint) { for _ in range(0u, n) { - lock_rwlock_in_mode(x, mode, || { + lock_rwlock_in_mode(x, mode, ref || { let oldval = *sharedstate; task::deschedule(); *sharedstate = oldval + 1; diff --git a/src/libsyntax/ast_util.rs b/src/libsyntax/ast_util.rs index 1a4b41404be01..7970c283a5eea 100644 --- a/src/libsyntax/ast_util.rs +++ b/src/libsyntax/ast_util.rs @@ -531,7 +531,9 @@ impl<'a, O: IdVisitingOperation> Visitor<()> for IdVisitor<'a, O> { id: NodeId, _: ()) { self.operation.visit_id(id); - struct_def.ctor_id.map(|ctor_id| self.operation.visit_id(ctor_id)); + struct_def.ctor_id.map(ref |ctor_id| { + self.operation.visit_id(ctor_id) + }); visit::walk_struct_def(self, struct_def, ()); } @@ -614,18 +616,20 @@ pub fn walk_pat(pat: &Pat, it: |&Pat| -> bool) -> bool { match pat.node { PatIdent(_, _, Some(ref p)) => walk_pat(&**p, it), PatStruct(_, ref fields, _) => { - fields.iter().all(|field| walk_pat(&*field.pat, |p| it(p))) + fields.iter().all(ref |field| { + walk_pat(&*field.pat, ref |p| it(p)) + }) } PatEnum(_, Some(ref s)) | PatTup(ref s) => { - s.iter().all(|p| walk_pat(&**p, |p| it(p))) + s.iter().all(ref |p| walk_pat(&**p, ref |p| it(p))) } PatBox(ref s) | PatRegion(ref s) => { walk_pat(&**s, it) } PatVec(ref before, ref slice, ref after) => { - before.iter().all(|p| walk_pat(&**p, |p| it(p))) && - slice.iter().all(|p| walk_pat(&**p, |p| it(p))) && - after.iter().all(|p| walk_pat(&**p, |p| it(p))) + before.iter().all(ref |p| walk_pat(&**p, ref |p| it(p))) && + slice.iter().all(ref |p| walk_pat(&**p, ref |p| it(p))) && + after.iter().all(ref |p| walk_pat(&**p, ref |p| it(p))) } PatMac(_) => fail!("attempted to analyze unexpanded pattern"), PatWild(_) | PatLit(_) | PatRange(_, _) | PatIdent(_, _, _) | diff --git a/src/libsyntax/attr.rs b/src/libsyntax/attr.rs index 21252619d11ae..def6dbe116b95 100644 --- a/src/libsyntax/attr.rs +++ b/src/libsyntax/attr.rs @@ -317,7 +317,7 @@ pub fn test_cfg> // this would be much nicer as a chain of iterator adaptors, but // this doesn't work. - let some_cfg_matches = metas.fold(false, |matches, mi| { + let some_cfg_matches = metas.fold(false, ref |matches, mi| { debug!("testing name: {}", mi.name()); let this_matches = if mi.check_name("cfg") { // it is a #[cfg()] attribute debug!("is cfg"); @@ -326,7 +326,7 @@ pub fn test_cfg> match mi.meta_item_list() { Some(cfg_meta) => { debug!("is cfg(...)"); - cfg_meta.iter().all(|cfg_mi| { + cfg_meta.iter().all(ref |cfg_mi| { debug!("cfg({}[...])", cfg_mi.name()); match cfg_mi.node { ast::MetaList(ref s, ref not_cfgs) @@ -334,7 +334,7 @@ pub fn test_cfg> debug!("not!"); // inside #[cfg(not(...))], so these need to all // not match. - !not_cfgs.iter().all(|mi| { + !not_cfgs.iter().all(ref |mi| { debug!("cfg(not({}[...]))", mi.name()); contains(cfg, *mi) }) diff --git a/src/libsyntax/diagnostics/plugin.rs b/src/libsyntax/diagnostics/plugin.rs index 209296989fa0d..6129953390b17 100644 --- a/src/libsyntax/diagnostics/plugin.rs +++ b/src/libsyntax/diagnostics/plugin.rs @@ -51,7 +51,7 @@ pub fn expand_diagnostic_used(ecx: &mut ExtCtxt, span: Span, [ast::TTTok(_, token::IDENT(code, _))] => code, _ => unreachable!() }; - with_registered_diagnostics(|diagnostics| { + with_registered_diagnostics(ref |diagnostics| { if !diagnostics.contains_key(&code.name) { ecx.span_err(span, format!( "unknown diagnostic code {}; add to librustc/diagnostics.rs", @@ -60,7 +60,7 @@ pub fn expand_diagnostic_used(ecx: &mut ExtCtxt, span: Span, } () }); - with_used_diagnostics(|diagnostics| { + with_used_diagnostics(ref |diagnostics| { match diagnostics.swap(code.name, span) { Some(previous_span) => { ecx.span_warn(span, format!( @@ -88,7 +88,7 @@ pub fn expand_register_diagnostic(ecx: &mut ExtCtxt, span: Span, } _ => unreachable!() }; - with_registered_diagnostics(|diagnostics| { + with_registered_diagnostics(ref |diagnostics| { if !diagnostics.insert(code.name, description) { ecx.span_err(span, format!( "diagnostic code {} already registered", token::get_ident(*code).get() @@ -108,16 +108,16 @@ pub fn expand_build_diagnostic_array(ecx: &mut ExtCtxt, span: Span, _ => unreachable!() }; - let (count, expr) = with_used_diagnostics(|diagnostics_in_use| { - with_registered_diagnostics(|diagnostics| { + let (count, expr) = with_used_diagnostics(ref |diagnostics_in_use| { + with_registered_diagnostics(ref |diagnostics| { let descriptions: Vec> = diagnostics - .iter().filter_map(|(code, description)| { + .iter().filter_map(ref |(code, description)| { if !diagnostics_in_use.contains_key(code) { ecx.span_warn(span, format!( "diagnostic code {} never used", token::get_name(*code).get() ).as_slice()); } - description.map(|description| { + description.map(ref |description| { ecx.expr_tuple(span, vec![ ecx.expr_str(span, token::get_name(*code)), ecx.expr_str(span, token::get_name(description)) diff --git a/src/libsyntax/ext/deriving/clone.rs b/src/libsyntax/ext/deriving/clone.rs index bbe96018f4b3d..892e7552d013d 100644 --- a/src/libsyntax/ext/deriving/clone.rs +++ b/src/libsyntax/ext/deriving/clone.rs @@ -39,7 +39,7 @@ pub fn expand_deriving_clone(cx: &mut ExtCtxt, args: Vec::new(), ret_ty: Self, attributes: attrs, - combine_substructure: combine_substructure(|c, s, sub| { + combine_substructure: combine_substructure(ref |c, s, sub| { cs_clone("Clone", c, s, sub) }), } @@ -49,15 +49,17 @@ pub fn expand_deriving_clone(cx: &mut ExtCtxt, trait_def.expand(cx, mitem, item, push) } -fn cs_clone( - name: &str, - cx: &mut ExtCtxt, trait_span: Span, - substr: &Substructure) -> Gc { +fn cs_clone(name: &str, + cx: &mut ExtCtxt, + trait_span: Span, + substr: &Substructure) + -> Gc { let clone_ident = substr.method_ident; let ctor_ident; let all_fields; - let subcall = |field: &FieldInfo| - cx.expr_method_call(field.span, field.self_, clone_ident, Vec::new()); + let subcall = ref |field: &FieldInfo| { + cx.expr_method_call(field.span, field.self_, clone_ident, Vec::new()) + }; match *substr.fields { Struct(ref af) => { @@ -87,7 +89,7 @@ fn cs_clone( cx.expr_call_ident(trait_span, ctor_ident, subcalls) } else { // struct-like - let fields = all_fields.iter().map(|field| { + let fields = all_fields.iter().map(ref |field| { let ident = match field.name { Some(i) => i, None => { diff --git a/src/libsyntax/ext/deriving/cmp/totaleq.rs b/src/libsyntax/ext/deriving/cmp/totaleq.rs index 42365936c9d4f..8389ff5a9ab24 100644 --- a/src/libsyntax/ext/deriving/cmp/totaleq.rs +++ b/src/libsyntax/ext/deriving/cmp/totaleq.rs @@ -25,14 +25,19 @@ pub fn expand_deriving_totaleq(cx: &mut ExtCtxt, push: |Gc|) { fn cs_total_eq_assert(cx: &mut ExtCtxt, span: Span, substr: &Substructure) -> Gc { - cs_same_method(|cx, span, exprs| { + cs_same_method(ref |cx, span, exprs| { // create `a.(); b.(); c.(); ...` // (where method is `assert_receiver_is_total_eq`) - let stmts = exprs.move_iter().map(|e| cx.stmt_expr(e)).collect(); + let stmts = exprs.move_iter() + .map(ref |e| cx.stmt_expr(e)) + .collect(); let block = cx.block(span, stmts, None); cx.expr_block(block) }, - |cx, sp, _, _| cx.span_bug(sp, "non matching enums in deriving(Eq)?"), + ref |cx, sp, _, _| { + cx.span_bug(sp, + "non matching enums in deriving(Eq)?") + }, cx, span, substr) @@ -57,7 +62,7 @@ pub fn expand_deriving_totaleq(cx: &mut ExtCtxt, args: vec!(), ret_ty: nil_ty(), attributes: attrs, - combine_substructure: combine_substructure(|a, b, c| { + combine_substructure: combine_substructure(ref |a, b, c| { cs_total_eq_assert(a, b, c) }) } diff --git a/src/libsyntax/ext/deriving/cmp/totalord.rs b/src/libsyntax/ext/deriving/cmp/totalord.rs index e010b635fe41a..a7c6516a34d02 100644 --- a/src/libsyntax/ext/deriving/cmp/totalord.rs +++ b/src/libsyntax/ext/deriving/cmp/totalord.rs @@ -40,7 +40,7 @@ pub fn expand_deriving_totalord(cx: &mut ExtCtxt, args: vec!(borrowed_self()), ret_ty: Literal(Path::new(vec!("std", "cmp", "Ordering"))), attributes: attrs, - combine_substructure: combine_substructure(|a, b, c| { + combine_substructure: combine_substructure(ref |a, b, c| { cs_cmp(a, b, c) }), } @@ -88,7 +88,7 @@ pub fn cs_cmp(cx: &mut ExtCtxt, span: Span, // foldr nests the if-elses correctly, leaving the first field // as the outermost one, and the last as the innermost. false, - |cx, span, old, new| { + ref |cx, span, old, new| { // let __test = new; // if __test == ::std::cmp::Equal { // old @@ -107,7 +107,7 @@ pub fn cs_cmp(cx: &mut ExtCtxt, span: Span, cx.expr_block(cx.block(span, vec!(assign), Some(if_))) }, cx.expr_path(equals_path.clone()), - |cx, span, (self_args, tag_tuple), _non_self_args| { + ref |cx, span, (self_args, tag_tuple), _non_self_args| { if self_args.len() != 2 { cx.span_bug(span, "not exactly 2 arguments in `deriving(TotalOrd)`") } else { diff --git a/src/libsyntax/ext/deriving/decodable.rs b/src/libsyntax/ext/deriving/decodable.rs index d909ffd2b49fb..6162e9bbe89c2 100644 --- a/src/libsyntax/ext/deriving/decodable.rs +++ b/src/libsyntax/ext/deriving/decodable.rs @@ -54,7 +54,7 @@ pub fn expand_deriving_decodable(cx: &mut ExtCtxt, vec!(box Self, box Literal(Path::new_local("__E"))), true)), attributes: Vec::new(), - combine_substructure: combine_substructure(|a, b, c| { + combine_substructure: combine_substructure(ref |a, b, c| { decodable_substructure(a, b, c) }), }) @@ -166,7 +166,7 @@ fn decode_static_fields(cx: &mut ExtCtxt, if fields.is_empty() { cx.expr_ident(trait_span, outer_pat_ident) } else { - let fields = fields.iter().enumerate().map(|(i, &span)| { + let fields = fields.iter().enumerate().map(ref |(i, &span)| { getarg(cx, span, token::intern_and_get_ident(format!("_field{}", i).as_slice()), @@ -178,7 +178,9 @@ fn decode_static_fields(cx: &mut ExtCtxt, } Named(ref fields) => { // use the field's span to get nicer error messages. - let fields = fields.iter().enumerate().map(|(i, &(name, span))| { + let fields = fields.iter() + .enumerate() + .map(ref |(i, &(name, span))| { let arg = getarg(cx, span, token::get_ident(name), i); cx.field_imm(span, name, arg) }).collect(); diff --git a/src/libsyntax/ext/deriving/default.rs b/src/libsyntax/ext/deriving/default.rs index f7d0308e1bd21..f956b2569c429 100644 --- a/src/libsyntax/ext/deriving/default.rs +++ b/src/libsyntax/ext/deriving/default.rs @@ -19,10 +19,10 @@ use parse::token::InternedString; use std::gc::Gc; pub fn expand_deriving_default(cx: &mut ExtCtxt, - span: Span, - mitem: Gc, - item: Gc, - push: |Gc|) { + span: Span, + mitem: Gc, + item: Gc, + push: |Gc|) { let inline = cx.meta_word(span, InternedString::new("inline")); let attrs = vec!(cx.attribute(span, inline)); let trait_def = TraitDef { @@ -39,7 +39,7 @@ pub fn expand_deriving_default(cx: &mut ExtCtxt, args: Vec::new(), ret_ty: Self, attributes: attrs, - combine_substructure: combine_substructure(|a, b, c| { + combine_substructure: combine_substructure(ref |a, b, c| { default_substructure(a, b, c) }) }) @@ -55,7 +55,9 @@ fn default_substructure(cx: &mut ExtCtxt, trait_span: Span, cx.ident_of("Default"), cx.ident_of("default") ); - let default_call = |span| cx.expr_call_global(span, default_ident.clone(), Vec::new()); + let default_call = ref |span| { + cx.expr_call_global(span, default_ident.clone(), Vec::new()) + }; return match *substr.fields { StaticStruct(_, ref summary) => { @@ -64,15 +66,22 @@ fn default_substructure(cx: &mut ExtCtxt, trait_span: Span, if fields.is_empty() { cx.expr_ident(trait_span, substr.type_ident) } else { - let exprs = fields.iter().map(|sp| default_call(*sp)).collect(); + let exprs = fields.iter() + .map(ref |sp| default_call(*sp)) + .collect(); cx.expr_call_ident(trait_span, substr.type_ident, exprs) } } Named(ref fields) => { - let default_fields = fields.iter().map(|&(ident, span)| { - cx.field_imm(span, ident, default_call(span)) - }).collect(); - cx.expr_struct_ident(trait_span, substr.type_ident, default_fields) + let default_fields = fields.iter() + .map(ref |&(ident, span)| { + cx.field_imm(span, + ident, + default_call(span)) + }).collect(); + cx.expr_struct_ident(trait_span, + substr.type_ident, + default_fields) } } } diff --git a/src/libsyntax/ext/deriving/generic/mod.rs b/src/libsyntax/ext/deriving/generic/mod.rs index 4b185419b407c..8dfb40f4d7e59 100644 --- a/src/libsyntax/ext/deriving/generic/mod.rs +++ b/src/libsyntax/ext/deriving/generic/mod.rs @@ -395,15 +395,15 @@ impl<'a> TraitDef<'a> { let mut ty_params = ty_params.into_vec(); // Copy the lifetimes - lifetimes.extend(generics.lifetimes.iter().map(|l| (*l).clone())); + lifetimes.extend(generics.lifetimes.iter().map(ref |l| (*l).clone())); // Create the type parameters. - ty_params.extend(generics.ty_params.iter().map(|ty_param| { + ty_params.extend(generics.ty_params.iter().map(ref |ty_param| { // I don't think this can be moved out of the loop, since // a TyParamBound requires an ast id let mut bounds: Vec<_> = // extra restrictions on the generics parameters to the type being derived upon - self.additional_bounds.iter().map(|p| { + self.additional_bounds.iter().map(ref |p| { cx.typarambound(p.to_path(cx, self.span, type_ident, generics)) }).collect(); @@ -429,14 +429,14 @@ impl<'a> TraitDef<'a> { let trait_ref = cx.trait_ref(trait_path); // Create the type parameters on the `self` path. - let self_ty_params = generics.ty_params.map(|ty_param| { + let self_ty_params = generics.ty_params.map(ref |ty_param| { cx.ty_ident(self.span, ty_param.ident) }); let self_lifetimes: Vec = generics.lifetimes .iter() - .map(|ld| ld.lifetime) + .map(ref |ld| ld.lifetime) .collect(); // Create the type of `self`. @@ -460,7 +460,7 @@ impl<'a> TraitDef<'a> { opt_trait_ref, self_type, methods.move_iter() - .map(|method| { + .map(ref |method| { ast::MethodImplItem(method) }).collect())) } @@ -470,7 +470,7 @@ impl<'a> TraitDef<'a> { struct_def: &StructDef, type_ident: Ident, generics: &Generics) -> Gc { - let methods = self.methods.iter().map(|method_def| { + let methods = self.methods.iter().map(ref |method_def| { let (explicit_self, self_args, nonself_args, tys) = method_def.split_self_nonself_args( cx, self, type_ident, generics); @@ -510,7 +510,7 @@ impl<'a> TraitDef<'a> { enum_def: &EnumDef, type_ident: Ident, generics: &Generics) -> Gc { - let methods = self.methods.iter().map(|method_def| { + let methods = self.methods.iter().map(ref |method_def| { let (explicit_self, self_args, nonself_args, tys) = method_def.split_self_nonself_args(cx, self, type_ident, generics); @@ -659,7 +659,7 @@ impl<'a> MethodDef<'a> { _ => Some(ast::Arg::new_self(trait_.span, ast::MutImmutable, special_idents::self_)) }; let args = { - let args = arg_types.move_iter().map(|(name, ty)| { + let args = arg_types.move_iter().map(ref |(name, ty)| { cx.arg(trait_.span, name, ty) }); self_arg.move_iter().chain(args).collect() @@ -737,8 +737,8 @@ impl<'a> MethodDef<'a> { raw_fields.get(0) .iter() .enumerate() - .map(|(i, &(span, opt_id, field))| { - let other_fields = raw_fields.tail().iter().map(|l| { + .map(ref |(i, &(span, opt_id, field))| { + let other_fields = raw_fields.tail().iter().map(ref |l| { match l.get(i) { &(_, _, ex) => ex } @@ -876,7 +876,7 @@ impl<'a> MethodDef<'a> { let variants = &enum_def.variants; let self_arg_names = self_args.iter().enumerate() - .map(|(arg_count, _self_arg)| { + .map(ref |(arg_count, _self_arg)| { if arg_count == 0 { "__self".to_string() } else { @@ -886,15 +886,17 @@ impl<'a> MethodDef<'a> { .collect::>(); let self_arg_idents = self_arg_names.iter() - .map(|name|cx.ident_of(name.as_slice())) + .map(ref |name| cx.ident_of(name.as_slice())) .collect::>(); // The `vi_idents` will be bound, solely in the catch-all, to // a series of let statements mapping each self_arg to a uint // corresponding to its variant index. let vi_idents : Vec = self_arg_names.iter() - .map(|name| { let vi_suffix = format!("{:s}_vi", name.as_slice()); - cx.ident_of(vi_suffix.as_slice()) }) + .map(ref |name| { + let vi_suffix = format!("{:s}_vi", name.as_slice()); + cx.ident_of(vi_suffix.as_slice()) + }) .collect::>(); // Builds, via callback to call_substructure_method, the @@ -909,13 +911,13 @@ impl<'a> MethodDef<'a> { // ... // where each tuple has length = self_args.len() let mut match_arms : Vec = variants.iter().enumerate() - .map(|(index, &variant)| { + .map(ref |(index, &variant)| { // These self_pats have form Variant1, Variant2, ... let self_pats : Vec<(Gc, Vec<(Span, Option, Gc)>)>; self_pats = self_arg_names.iter() - .map(|self_arg_name| + .map(ref |self_arg_name| trait_.create_enum_variant_pattern( cx, &*variant, self_arg_name.as_slice(), ast::MutImmutable)) @@ -924,7 +926,9 @@ impl<'a> MethodDef<'a> { // A single arm has form (&VariantK, &VariantK, ...) => BodyK // (see "Final wrinkle" note below for why.) let subpats = self_pats.iter() - .map(|&(p, ref _idents)| cx.pat(sp, ast::PatRegion(p))) + .map(ref |&(p, ref _idents)| { + cx.pat(sp, ast::PatRegion(p)) + }) .collect::>>(); // Here is the pat = `(&VariantK, &VariantK, ...)` @@ -947,7 +951,8 @@ impl<'a> MethodDef<'a> { field_tuples = self_arg_fields.iter().enumerate() // For each arg field of self, pull out its getter expr ... - .map(|(field_index, &(sp, opt_ident, self_getter_expr))| { + .map(ref |(field_index, + &(sp, opt_ident, self_getter_expr))| { // ... but FieldInfo also wants getter expr // for matching other arguments of Self type; // so walk across the *other* self_pats and @@ -955,7 +960,7 @@ impl<'a> MethodDef<'a> { // them (using `field_index` tracked above). // That is the heart of the transposition. let others = self_pats.tail().iter() - .map(|&(_pat, ref fields)| { + .map(ref |&(_pat, ref fields)| { let &(_, _opt_ident, other_getter_expr) = fields.get(field_index); @@ -1007,7 +1012,7 @@ impl<'a> MethodDef<'a> { // if variants.len() > 1 && self_args.len() > 1 { let arms : Vec = variants.iter().enumerate() - .map(|(index, &variant)| { + .map(ref |(index, &variant)| { let pat = variant_to_pat(cx, sp, &*variant); let lit = ast::LitInt(index as u64, ast::UnsignedIntLit(ast::TyU)); cx.arm(sp, vec![pat], cx.expr_lit(sp, lit)) @@ -1119,7 +1124,7 @@ impl<'a> MethodDef<'a> { // expression; here add a layer of borrowing, turning // `(*self, *__arg_0, ...)` into `(&*self, &*__arg_0, ...)`. let borrowed_self_args = self_args.iter() - .map(|&self_arg| cx.expr_addr_of(sp, self_arg)) + .map(ref |&self_arg| cx.expr_addr_of(sp, self_arg)) .collect::>>(); let match_arg = cx.expr(sp, ast::ExprTup(borrowed_self_args)); cx.expr_match(sp, match_arg, match_arms) @@ -1133,11 +1138,14 @@ impl<'a> MethodDef<'a> { self_args: &[Gc], nonself_args: &[Gc]) -> Gc { - let summary = enum_def.variants.iter().map(|v| { + let summary = enum_def.variants.iter().map(ref |v| { let ident = v.node.name; let summary = match v.node.kind { ast::TupleVariantKind(ref args) => { - Unnamed(args.iter().map(|va| trait_.set_expn_info(cx, va.ty.span)).collect()) + Unnamed(args.iter() + .map(ref |va| { + trait_.set_expn_info(cx, va.ty.span) + }).collect()) } ast::StructVariantKind(ref struct_def) => { trait_.summarise_struct(cx, &**struct_def) @@ -1145,8 +1153,11 @@ impl<'a> MethodDef<'a> { }; (ident, v.span, summary) }).collect(); - self.call_substructure_method(cx, trait_, type_ident, - self_args, nonself_args, + self.call_substructure_method(cx, + trait_, + type_ident, + self_args, + nonself_args, &StaticEnum(enum_def, summary)) } } @@ -1205,9 +1216,11 @@ impl<'a> TraitDef<'a> { field_paths: Vec , mutbl: ast::Mutability) -> Vec> { - field_paths.iter().map(|path| { + field_paths.iter().map(ref |path| { cx.pat(path.span, - ast::PatIdent(ast::BindByRef(mutbl), (*path).clone(), None)) + ast::PatIdent(ast::BindByRef(mutbl), + (*path).clone(), + None)) }).collect() } @@ -1260,7 +1273,9 @@ impl<'a> TraitDef<'a> { // struct_type is definitely not Unknown, since struct_def.fields // must be nonempty to reach here let pattern = if struct_type == Record { - let field_pats = subpats.iter().zip(ident_expr.iter()).map(|(&pat, &(_, id, _))| { + let field_pats = subpats.iter() + .zip(ident_expr.iter()) + .map(ref |(&pat, &(_, id, _))| { // id is guaranteed to be Some ast::FieldPat { ident: id.unwrap(), pat: pat } }).collect(); @@ -1331,7 +1346,7 @@ pub fn cs_fold(use_foldl: bool, match *substructure.fields { EnumMatching(_, _, ref all_fields) | Struct(ref all_fields) => { if use_foldl { - all_fields.iter().fold(base, |old, field| { + all_fields.iter().fold(base, ref |old, field| { f(cx, field.span, old, @@ -1339,7 +1354,7 @@ pub fn cs_fold(use_foldl: bool, field.other.as_slice()) }) } else { - all_fields.iter().rev().fold(base, |old, field| { + all_fields.iter().rev().fold(base, ref |old, field| { f(cx, field.span, old, @@ -1377,12 +1392,15 @@ pub fn cs_same_method(f: |&mut ExtCtxt, Span, Vec>| -> Gc, match *substructure.fields { EnumMatching(_, _, ref all_fields) | Struct(ref all_fields) => { // call self_n.method(other_1_n, other_2_n, ...) - let called = all_fields.iter().map(|field| { + let called = all_fields.iter().map(ref |field| { cx.expr_method_call(field.span, field.self_, substructure.method_ident, field.other.iter() - .map(|e| cx.expr_addr_of(field.span, *e)) + .map(ref |e| { + cx.expr_addr_of(field.span, + *e) + }) .collect()) }).collect(); @@ -1414,11 +1432,11 @@ pub fn cs_same_method_fold(use_foldl: bool, cs_same_method( |cx, span, vals| { if use_foldl { - vals.iter().fold(base, |old, &new| { + vals.iter().fold(base, ref |old, &new| { f(cx, span, old, new) }) } else { - vals.iter().rev().fold(base, |old, &new| { + vals.iter().rev().fold(base, ref |old, &new| { f(cx, span, old, new) }) } diff --git a/src/libsyntax/ext/deriving/hash.rs b/src/libsyntax/ext/deriving/hash.rs index f469139177a0b..2150f778b114c 100644 --- a/src/libsyntax/ext/deriving/hash.rs +++ b/src/libsyntax/ext/deriving/hash.rs @@ -54,7 +54,7 @@ pub fn expand_deriving_hash(cx: &mut ExtCtxt, args: vec!(Ptr(box Literal(args), Borrowed(None, MutMutable))), ret_ty: nil_ty(), attributes: attrs, - combine_substructure: combine_substructure(|a, b, c| { + combine_substructure: combine_substructure(ref |a, b, c| { hash_substructure(a, b, c) }) } @@ -71,7 +71,7 @@ fn hash_substructure(cx: &mut ExtCtxt, trait_span: Span, _ => cx.span_bug(trait_span, "incorrect number of arguments in `deriving(Hash)`") }; let hash_ident = substr.method_ident; - let call_hash = |span, thing_expr| { + let call_hash = ref |span, thing_expr| { let expr = cx.expr_method_call(span, thing_expr, hash_ident, vec!(state_expr)); cx.stmt_expr(expr) }; diff --git a/src/libsyntax/ext/deriving/mod.rs b/src/libsyntax/ext/deriving/mod.rs index a9b5c8a413463..c540ed4365774 100644 --- a/src/libsyntax/ext/deriving/mod.rs +++ b/src/libsyntax/ext/deriving/mod.rs @@ -68,9 +68,13 @@ pub fn expand_meta_deriving(cx: &mut ExtCtxt, MetaNameValue(ref tname, _) | MetaList(ref tname, _) | MetaWord(ref tname) => { - macro_rules! expand(($func:path) => ($func(cx, titem.span, - titem, item, - |i| push(i)))); + macro_rules! expand(($func:path) => ($func(cx, + titem.span, + titem, + item, + ref |i| { + push(i) + }))); match tname.get() { "Clone" => expand!(clone::expand_deriving_clone), diff --git a/src/libsyntax/ext/deriving/rand.rs b/src/libsyntax/ext/deriving/rand.rs index c652b5a5bed9a..38598508c8bec 100644 --- a/src/libsyntax/ext/deriving/rand.rs +++ b/src/libsyntax/ext/deriving/rand.rs @@ -45,7 +45,7 @@ pub fn expand_deriving_rand(cx: &mut ExtCtxt, ), ret_ty: Self, attributes: Vec::new(), - combine_substructure: combine_substructure(|a, b, c| { + combine_substructure: combine_substructure(ref |a, b, c| { rand_substructure(a, b, c) }) } @@ -66,7 +66,7 @@ fn rand_substructure(cx: &mut ExtCtxt, trait_span: Span, cx.ident_of("Rand"), cx.ident_of("rand") ); - let rand_call = |cx: &mut ExtCtxt, span| { + let rand_call = ref |cx: &mut ExtCtxt, span| { cx.expr_call_global(span, rand_ident.clone(), vec!( *rng.get(0) )) @@ -113,11 +113,19 @@ fn rand_substructure(cx: &mut ExtCtxt, trait_span: Span, value_ref, variant_count); - let mut arms = variants.iter().enumerate().map(|(i, &(ident, v_span, ref summary))| { + let mut arms = variants.iter() + .enumerate() + .map(ref |(i, &(ident, + v_span, + ref summary))| { let i_expr = cx.expr_uint(v_span, i); let pat = cx.pat_lit(v_span, i_expr); - let thing = rand_thing(cx, v_span, ident, summary, |cx, sp| rand_call(cx, sp)); + let thing = rand_thing(cx, + v_span, + ident, + summary, + ref |cx, sp| rand_call(cx, sp)); cx.arm(v_span, vec!( pat ), thing) }).collect:: >(); @@ -143,12 +151,14 @@ fn rand_substructure(cx: &mut ExtCtxt, trait_span: Span, if fields.is_empty() { cx.expr_ident(trait_span, ctor_ident) } else { - let exprs = fields.iter().map(|span| rand_call(cx, *span)).collect(); + let exprs = fields.iter() + .map(ref |span| rand_call(cx, *span)) + .collect(); cx.expr_call_ident(trait_span, ctor_ident, exprs) } } Named(ref fields) => { - let rand_fields = fields.iter().map(|&(ident, span)| { + let rand_fields = fields.iter().map(ref |&(ident, span)| { let e = rand_call(cx, span); cx.field_imm(span, ident, e) }).collect(); diff --git a/src/libsyntax/ext/deriving/zero.rs b/src/libsyntax/ext/deriving/zero.rs index 973f9d518cd70..4670347ff4a8e 100644 --- a/src/libsyntax/ext/deriving/zero.rs +++ b/src/libsyntax/ext/deriving/zero.rs @@ -51,11 +51,11 @@ pub fn expand_deriving_zero(cx: &mut ExtCtxt, ret_ty: Literal(Path::new(vec!("bool"))), attributes: attrs, combine_substructure: combine_substructure(|cx, span, substr| { - cs_and(|cx, span, _, _| cx.span_bug(span, - "Non-matching enum \ - variant in \ - deriving(Zero)"), - cx, span, substr) + cs_and(ref |cx, span, _, _| { + cx.span_bug(span, + "Non-matching enum variant in \ + deriving(Zero)") + }, cx, span, substr) }) } ) @@ -71,7 +71,9 @@ fn zero_substructure(cx: &mut ExtCtxt, trait_span: Span, cx.ident_of("Zero"), cx.ident_of("zero") ); - let zero_call = |span| cx.expr_call_global(span, zero_ident.clone(), Vec::new()); + let zero_call = ref |span| { + cx.expr_call_global(span, zero_ident.clone(), Vec::new()) + }; return match *substr.fields { StaticStruct(_, ref summary) => { @@ -80,12 +82,14 @@ fn zero_substructure(cx: &mut ExtCtxt, trait_span: Span, if fields.is_empty() { cx.expr_ident(trait_span, substr.type_ident) } else { - let exprs = fields.iter().map(|sp| zero_call(*sp)).collect(); + let exprs = fields.iter() + .map(ref |sp| zero_call(*sp)) + .collect(); cx.expr_call_ident(trait_span, substr.type_ident, exprs) } } Named(ref fields) => { - let zero_fields = fields.iter().map(|&(ident, span)| { + let zero_fields = fields.iter().map(ref |&(ident, span)| { cx.field_imm(span, ident, zero_call(span)) }).collect(); cx.expr_struct_ident(trait_span, substr.type_ident, zero_fields) diff --git a/src/libsyntax/ext/expand.rs b/src/libsyntax/ext/expand.rs index d918b28d4dc8f..ae108da2e2462 100644 --- a/src/libsyntax/ext/expand.rs +++ b/src/libsyntax/ext/expand.rs @@ -37,9 +37,14 @@ fn expand_expr(e: Gc, fld: &mut MacroExpander) -> Gc { // expr_mac should really be expr_ext or something; it's the // entry-point for all syntax extensions. ExprMac(ref mac) => { - let expanded_expr = match expand_mac_invoc(mac,&e.span, - |r|{r.make_expr()}, - |expr,fm|{mark_expr(expr,fm)}, + let expanded_expr = match expand_mac_invoc(mac, + &e.span, + ref |r| { + r.make_expr() + }, + ref |expr,fm| { + mark_expr(expr, fm) + }, fld) { Some(expr) => expr, None => { @@ -252,10 +257,17 @@ fn expand_item(it: Gc, fld: &mut MacroExpander) // we'd ideally decorator_items.push_all(expand_item(item, fld)), // but that double-mut-borrows fld let mut items: SmallVector> = SmallVector::zero(); - dec_fn(fld.cx, attr.span, attr.node.value, it, - |item| items.push(item)); + dec_fn(fld.cx, + attr.span, + attr.node.value, + it, + ref |item| items.push(item)); decorator_items.extend(items.move_iter() - .flat_map(|item| expand_item(item, fld).move_iter())); + .flat_map(ref |item| { + expand_item( + item, + fld).move_iter() + })); fld.cx.bt_pop(); } @@ -293,7 +305,7 @@ fn expand_item(it: Gc, fld: &mut MacroExpander) fn expand_item_modifiers(mut it: Gc, fld: &mut MacroExpander) -> Gc { // partition the attributes into ItemModifiers and others - let (modifiers, other_attrs) = it.attrs.partitioned(|attr| { + let (modifiers, other_attrs) = it.attrs.partitioned(ref |attr| { match fld.cx.syntax_env.find(&intern(attr.name().get())) { Some(rc) => match *rc { ItemModifier(_) => true, _ => false }, _ => false @@ -466,8 +478,8 @@ fn expand_item_mac(it: Gc, fld: &mut MacroExpander) match expanded.make_items() { Some(items) => { items.move_iter() - .map(|i| mark_item(i, fm)) - .flat_map(|i| fld.fold_item(i).move_iter()) + .map(ref |i| mark_item(i, fm)) + .flat_map(ref |i| fld.fold_item(i).move_iter()) .collect() } None => { @@ -493,8 +505,8 @@ fn expand_stmt(s: &Stmt, fld: &mut MacroExpander) -> SmallVector> { _ => return expand_non_macro_stmt(s, fld) }; let expanded_stmt = match expand_mac_invoc(mac,&s.span, - |r|{r.make_stmt()}, - |sts,mrk| { + ref |r|{r.make_stmt()}, + ref |sts,mrk| { mark_stmt(&*sts,mrk) }, fld) { @@ -508,7 +520,9 @@ fn expand_stmt(s: &Stmt, fld: &mut MacroExpander) -> SmallVector> { let fully_expanded = fld.fold_stmt(&*expanded_stmt); fld.cx.bt_pop(); let fully_expanded: SmallVector> = fully_expanded.move_iter() - .map(|s| box(GC) Spanned { span: s.span, node: s.node.clone() }) + .map(ref |s| { + box(GC) Spanned { span: s.span, node: s.node.clone() } + }) .collect(); fully_expanded.move_iter().map(|s| { @@ -557,7 +571,9 @@ fn expand_non_macro_stmt(s: &Stmt, fld: &mut MacroExpander) // generate fresh names, push them to a new pending list let idents = pattern_bindings(&*expanded_pat); let mut new_pending_renames = - idents.iter().map(|ident| (*ident, fresh_name(ident))).collect(); + idents.iter() + .map(ref |ident| (*ident, fresh_name(ident))) + .collect(); // rewrite the pattern using the new names (the old // ones have already been applied): let rewritten_pat = { @@ -568,7 +584,7 @@ fn expand_non_macro_stmt(s: &Stmt, fld: &mut MacroExpander) // add them to the existing pending renames: fld.cx.syntax_env.info().pending_renames.push_all_move(new_pending_renames); // also, don't forget to expand the init: - let new_init_opt = init.map(|e| fld.fold_expr(e)); + let new_init_opt = init.map(ref |e| fld.fold_expr(e)); let rewritten_local = box(GC) Local { ty: expanded_ty, @@ -597,7 +613,8 @@ fn expand_non_macro_stmt(s: &Stmt, fld: &mut MacroExpander) // expand the arm of a 'match', renaming for macro hygiene fn expand_arm(arm: &ast::Arm, fld: &mut MacroExpander) -> ast::Arm { // expand pats... they might contain macro uses: - let expanded_pats : Vec> = arm.pats.iter().map(|pat| fld.fold_pat(*pat)).collect(); + let expanded_pats : Vec> = + arm.pats.iter().map(ref |pat| fld.fold_pat(*pat)).collect(); if expanded_pats.len() == 0 { fail!("encountered match arm with 0 patterns"); } @@ -606,15 +623,17 @@ fn expand_arm(arm: &ast::Arm, fld: &mut MacroExpander) -> ast::Arm { let first_pat = expanded_pats.get(0); let idents = pattern_bindings(&**first_pat); let new_renames = - idents.iter().map(|id| (*id,fresh_name(id))).collect(); + idents.iter().map(ref |id| (*id,fresh_name(id))).collect(); // apply the renaming, but only to the PatIdents: let mut rename_pats_fld = PatIdentRenamer{renames:&new_renames}; let rewritten_pats = - expanded_pats.iter().map(|pat| rename_pats_fld.fold_pat(*pat)).collect(); + expanded_pats.iter() + .map(ref |pat| rename_pats_fld.fold_pat(*pat)) + .collect(); // apply renaming and then expansion to the guard and the body: let mut rename_fld = IdentRenamer{renames:&new_renames}; let rewritten_guard = - arm.guard.map(|g| fld.fold_expr(rename_fld.fold_expr(g))); + arm.guard.map(ref |g| fld.fold_expr(rename_fld.fold_expr(g))); let rewritten_body = fld.fold_expr(rename_fld.fold_expr(arm.body)); ast::Arm { attrs: arm.attrs.iter().map(|x| fld.fold_attribute(*x)).collect(), @@ -673,9 +692,12 @@ fn expand_block(blk: &Block, fld: &mut MacroExpander) -> P { // expand the elements of a block. fn expand_block_elts(b: &Block, fld: &mut MacroExpander) -> P { - let new_view_items = b.view_items.iter().map(|x| fld.fold_view_item(x)).collect(); + let new_view_items = b.view_items + .iter() + .map(ref |x| fld.fold_view_item(x)) + .collect(); let new_stmts = - b.stmts.iter().flat_map(|x| { + b.stmts.iter().flat_map(ref |x| { // perform all pending renames let renamed_stmt = { let pending_renames = &mut fld.cx.syntax_env.info().pending_renames; @@ -685,7 +707,7 @@ fn expand_block_elts(b: &Block, fld: &mut MacroExpander) -> P { // expand macros in the statement fld.fold_stmt(&*renamed_stmt).move_iter() }).collect(); - let new_expr = b.expr.map(|x| { + let new_expr = b.expr.map(ref |x| { let expr = { let pending_renames = &mut fld.cx.syntax_env.info().pending_renames; let mut rename_fld = IdentRenamer{renames:pending_renames}; @@ -818,7 +840,7 @@ impl<'a> Folder for PatIdentRenamer<'a> { let new_node = ast::PatIdent(binding_mode, Spanned{span: self.new_span(*sp), node: new_ident}, - sub.map(|p| self.fold_pat(p))); + sub.map(ref |p| self.fold_pat(p))); box(GC) ast::Pat { id: pat.id, span: self.new_span(pat.span), @@ -848,7 +870,10 @@ fn expand_method(m: &ast::Method, fld: &mut MacroExpander) -> SmallVector *shouldmatch.iter().max().unwrap())); for (idx,varref) in varrefs.iter().enumerate() { - let print_hygiene_debug_info = || { + let print_hygiene_debug_info = ref || { // good lord, you can't make a path with 0 segments, can you? let final_varref_ident = match varref.segments.last() { Some(pathsegment) => pathsegment.identifier, @@ -1492,14 +1519,14 @@ mod test { }; let varref_name = mtwt::resolve(final_varref_ident); let varref_idents : Vec - = varref.segments.iter().map(|s| s.identifier) + = varref.segments.iter().map(ref |s| s.identifier) .collect(); println!("varref #{}: {}, resolves to {}",idx, varref_idents, varref_name); let string = token::get_ident(final_varref_ident); println!("varref's first segment's string: \"{}\"", string.get()); println!("binding #{}: {}, resolves to {}", binding_idx, *bindings.get(binding_idx), binding_name); - mtwt::with_sctable(|x| mtwt::display_sctable(x)); + mtwt::with_sctable(ref |x| mtwt::display_sctable(x)); }; if shouldmatch.contains(&idx) { // it should be a path of length 1, and it should @@ -1548,7 +1575,7 @@ foo_module!() // find the xx binding let bindings = crate_bindings(&cr); let cxbinds: Vec<&ast::Ident> = - bindings.iter().filter(|b| { + bindings.iter().filter(ref |b| { let ident = token::get_ident(**b); let string = ident.get(); "xx" == string @@ -1562,7 +1589,7 @@ foo_module!() let varrefs = crate_varrefs(&cr); // the xx binding should bind all of the xx varrefs: - for (idx,v) in varrefs.iter().filter(|p| { + for (idx,v) in varrefs.iter().filter(ref |p| { p.segments.len() == 1 && "xx" == token::get_ident(p.segments.get(0).identifier).get() }).enumerate() { @@ -1574,7 +1601,7 @@ foo_module!() println!("varref: {:?}",v.segments.get(0).identifier); println!("resolves to: {:?}", mtwt::resolve(v.segments.get(0).identifier)); - mtwt::with_sctable(|x| mtwt::display_sctable(x)); + mtwt::with_sctable(ref |x| mtwt::display_sctable(x)); } assert_eq!(mtwt::resolve(v.segments.get(0).identifier), resolved_binding); diff --git a/src/libsyntax/ext/format.rs b/src/libsyntax/ext/format.rs index 835181d55c457..9c2086c09542d 100644 --- a/src/libsyntax/ext/format.rs +++ b/src/libsyntax/ext/format.rs @@ -735,8 +735,9 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, sp: Span, cx.verify_piece(&piece); match cx.trans_piece(&piece) { Some(piece) => { - cx.trans_literal_string().map(|piece| - cx.pieces.push(piece)); + cx.trans_literal_string().map(ref |piece| { + cx.pieces.push(piece) + }); cx.pieces.push(piece); } None => {} @@ -754,7 +755,7 @@ pub fn expand_preparsed_format_args(ecx: &mut ExtCtxt, sp: Span, } None => {} } - cx.trans_literal_string().map(|piece| cx.pieces.push(piece)); + cx.trans_literal_string().map(ref |piece| cx.pieces.push(piece)); // Make sure that all arguments were used and all arguments have types. for (i, ty) in cx.arg_types.iter().enumerate() { diff --git a/src/libsyntax/fold.rs b/src/libsyntax/fold.rs index 9ad28f02e8034..4e7e2f67308a0 100644 --- a/src/libsyntax/fold.rs +++ b/src/libsyntax/fold.rs @@ -290,7 +290,7 @@ pub fn noop_fold_view_path(view_path: Gc, fld: &mut T) -> G ViewPathList(ref path, ref path_list_idents, node_id) => { let id = fld.new_id(node_id); ViewPathList(fld.fold_path(path), - path_list_idents.iter().map(|path_list_ident| { + path_list_idents.iter().map(ref |path_list_ident| { Spanned { node: match path_list_ident.node { PathListIdent { id, name } => @@ -315,9 +315,9 @@ pub fn noop_fold_view_path(view_path: Gc, fld: &mut T) -> G pub fn noop_fold_arm(a: &Arm, fld: &mut T) -> Arm { Arm { - attrs: a.attrs.iter().map(|x| fld.fold_attribute(*x)).collect(), - pats: a.pats.iter().map(|x| fld.fold_pat(*x)).collect(), - guard: a.guard.map(|x| fld.fold_expr(x)), + attrs: a.attrs.iter().map(ref |x| fld.fold_attribute(*x)).collect(), + pats: a.pats.iter().map(ref |x| fld.fold_pat(*x)).collect(), + guard: a.guard.map(ref |x| fld.fold_expr(x)), body: fld.fold_expr(a.body), } } @@ -326,7 +326,7 @@ pub fn noop_fold_decl(d: Gc, fld: &mut T) -> SmallVector SmallVector::one(DeclLocal(fld.fold_local(*l))), DeclItem(it) => { - fld.fold_item(it).move_iter().map(|i| DeclItem(i)).collect() + fld.fold_item(it).move_iter().map(ref |i| DeclItem(i)).collect() } }; @@ -381,7 +381,9 @@ pub fn noop_fold_ty(t: P, fld: &mut T) -> P { kind: f.kind, }) } - TyTup(ref tys) => TyTup(tys.iter().map(|&ty| fld.fold_ty(ty)).collect()), + TyTup(ref tys) => { + TyTup(tys.iter().map(ref |&ty| fld.fold_ty(ty)).collect()) + } TyParen(ref ty) => TyParen(fld.fold_ty(*ty)), TyPath(ref path, ref bounds, id) => { let id = fld.new_id(id); @@ -406,11 +408,11 @@ pub fn noop_fold_foreign_mod(nm: &ForeignMod, fld: &mut T) -> Foreign abi: nm.abi, view_items: nm.view_items .iter() - .map(|x| fld.fold_view_item(x)) + .map(ref |x| fld.fold_view_item(x)) .collect(), items: nm.items .iter() - .map(|x| fld.fold_foreign_item(*x)) + .map(ref |x| fld.fold_foreign_item(*x)) .collect(), } } @@ -420,14 +422,16 @@ pub fn noop_fold_variant(v: &Variant, fld: &mut T) -> P { let kind; match v.node.kind { TupleVariantKind(ref variant_args) => { - kind = TupleVariantKind(variant_args.iter().map(|x| + kind = TupleVariantKind(variant_args.iter().map(ref |x| fld.fold_variant_arg(x)).collect()) } StructVariantKind(ref struct_def) => { kind = StructVariantKind(box(GC) ast::StructDef { - fields: struct_def.fields.iter() - .map(|f| fld.fold_struct_field(f)).collect(), - ctor_id: struct_def.ctor_id.map(|c| fld.new_id(c)), + fields: struct_def.fields + .iter() + .map(ref |f| fld.fold_struct_field(f)) + .collect(), + ctor_id: struct_def.ctor_id.map(ref |c| fld.new_id(c)), super_struct: match struct_def.super_struct { Some(t) => Some(fld.fold_ty(t)), None => None @@ -437,7 +441,11 @@ pub fn noop_fold_variant(v: &Variant, fld: &mut T) -> P { } } - let attrs = v.node.attrs.iter().map(|x| fld.fold_attribute(*x)).collect(); + let attrs = v.node + .attrs + .iter() + .map(ref |x| fld.fold_attribute(*x)) + .collect(); let de = match v.node.disr_expr { Some(e) => Some(fld.fold_expr(e)), @@ -467,8 +475,14 @@ pub fn noop_fold_path(p: &Path, fld: &mut T) -> Path { global: p.global, segments: p.segments.iter().map(|segment| ast::PathSegment { identifier: fld.fold_ident(segment.identifier), - lifetimes: segment.lifetimes.iter().map(|l| fld.fold_lifetime(l)).collect(), - types: segment.types.iter().map(|&typ| fld.fold_ty(typ)).collect(), + lifetimes: segment.lifetimes + .iter() + .map(ref |l| fld.fold_lifetime(l)) + .collect(), + types: segment.types + .iter() + .map(ref |&typ| fld.fold_ty(typ)) + .collect(), }).collect() } } @@ -479,7 +493,7 @@ pub fn noop_fold_local(l: Gc, fld: &mut T) -> Gc { id: id, ty: fld.fold_ty(l.ty), pat: fld.fold_pat(l.pat), - init: l.init.map(|e| fld.fold_expr(e)), + init: l.init.map(ref |e| fld.fold_expr(e)), span: fld.new_span(l.span), source: l.source, } @@ -537,7 +551,9 @@ pub fn noop_fold_meta_item(mi: &MetaItem, fld: &mut T) -> MetaItem { MetaList(ref id, ref mis) => { MetaList((*id).clone(), mis.iter() - .map(|e| box (GC) fld.fold_meta_item(&**e)).collect()) + .map(ref |e| { + box (GC) fld.fold_meta_item(&**e) + }).collect()) } MetaNameValue(ref id, ref s) => { MetaNameValue((*id).clone(), (*s).clone()) @@ -563,7 +579,7 @@ pub fn noop_fold_tt(tt: &TokenTree, fld: &mut T) -> TokenTree { TTSeq(span, ref pattern, ref sep, is_optional) => TTSeq(span, Rc::new(fld.fold_tts(pattern.as_slice())), - sep.as_ref().map(|tok| fld.fold_token(tok)), + sep.as_ref().map(ref |tok| fld.fold_token(tok)), is_optional), TTNonterminal(sp,ref ident) => TTNonterminal(sp,fld.fold_ident(*ident)) @@ -637,7 +653,7 @@ pub fn noop_fold_interpolated(nt : &token::Nonterminal, fld: &mut T) pub fn noop_fold_fn_decl(decl: &FnDecl, fld: &mut T) -> P { P(FnDecl { - inputs: decl.inputs.iter().map(|x| fld.fold_arg(x)).collect(), // bad copy + inputs: decl.inputs.iter().map(ref |x| fld.fold_arg(x)).collect(), output: fld.fold_ty(decl.output), cf: decl.cf, variadic: decl.variadic @@ -664,9 +680,9 @@ pub fn noop_fold_ty_param(tp: &TyParam, fld: &mut T) -> TyParam { TyParam { ident: tp.ident, id: id, - bounds: tp.bounds.map(|x| fld.fold_ty_param_bound(x)), - unbound: tp.unbound.as_ref().map(|x| fld.fold_ty_param_bound(x)), - default: tp.default.map(|x| fld.fold_ty(x)), + bounds: tp.bounds.map(ref |x| fld.fold_ty_param_bound(x)), + unbound: tp.unbound.as_ref().map(ref |x| fld.fold_ty_param_bound(x)), + default: tp.default.map(ref |x| fld.fold_ty(x)), span: tp.span } } @@ -695,16 +711,16 @@ pub fn noop_fold_lifetime_def(l: &LifetimeDef, fld: &mut T) } pub fn noop_fold_lifetimes(lts: &[Lifetime], fld: &mut T) -> Vec { - lts.iter().map(|l| fld.fold_lifetime(l)).collect() + lts.iter().map(ref |l| fld.fold_lifetime(l)).collect() } pub fn noop_fold_lifetime_defs(lts: &[LifetimeDef], fld: &mut T) -> Vec { - lts.iter().map(|l| fld.fold_lifetime_def(l)).collect() + lts.iter().map(ref |l| fld.fold_lifetime_def(l)).collect() } pub fn noop_fold_opt_lifetime(o_lt: &Option, fld: &mut T) -> Option { - o_lt.as_ref().map(|lt| fld.fold_lifetime(lt)) + o_lt.as_ref().map(ref |lt| fld.fold_lifetime(lt)) } pub fn noop_fold_generics(generics: &Generics, fld: &mut T) -> Generics { @@ -721,7 +737,7 @@ pub fn noop_fold_where_clause( -> WhereClause { WhereClause { id: fld.new_id(where_clause.id), - predicates: where_clause.predicates.iter().map(|predicate| { + predicates: where_clause.predicates.iter().map(ref |predicate| { fld.fold_where_predicate(predicate) }).collect(), } @@ -735,7 +751,7 @@ pub fn noop_fold_where_predicate( id: fld.new_id(predicate.id), span: fld.new_span(predicate.span), ident: fld.fold_ident(predicate.ident), - bounds: predicate.bounds.map(|x| { + bounds: predicate.bounds.map(ref |x| { fld.fold_ty_param_bound(x) }), } @@ -744,8 +760,11 @@ pub fn noop_fold_where_predicate( pub fn noop_fold_struct_def(struct_def: Gc, fld: &mut T) -> Gc { box(GC) ast::StructDef { - fields: struct_def.fields.iter().map(|f| fld.fold_struct_field(f)).collect(), - ctor_id: struct_def.ctor_id.map(|cid| fld.new_id(cid)), + fields: struct_def.fields + .iter() + .map(ref |f| fld.fold_struct_field(f)) + .collect(), + ctor_id: struct_def.ctor_id.map(ref |cid| fld.new_id(cid)), super_struct: match struct_def.super_struct { Some(t) => Some(fld.fold_ty(t)), None => None @@ -769,7 +788,11 @@ pub fn noop_fold_struct_field(f: &StructField, fld: &mut T) -> Struct kind: f.node.kind, id: id, ty: fld.fold_ty(f.node.ty), - attrs: f.node.attrs.iter().map(|a| fld.fold_attribute(*a)).collect(), + attrs: f.node + .attrs + .iter() + .map(ref |a| fld.fold_attribute(*a)) + .collect(), }, span: fld.new_span(f.span), } @@ -792,8 +815,8 @@ pub fn noop_fold_mt(mt: &MutTy, folder: &mut T) -> MutTy { pub fn noop_fold_opt_bounds(b: &Option>, folder: &mut T) -> Option> { - b.as_ref().map(|bounds| { - bounds.map(|bound| { + b.as_ref().map(ref |bounds| { + bounds.map(ref |bound| { folder.fold_ty_param_bound(bound) }) }) @@ -821,7 +844,10 @@ pub fn noop_fold_view_item(vi: &ViewItem, folder: &mut T) }; ViewItem { node: inner_view_item, - attrs: vi.attrs.iter().map(|a| folder.fold_attribute(*a)).collect(), + attrs: vi.attrs + .iter() + .map(ref |a| folder.fold_attribute(*a)) + .collect(), vis: vi.vis, span: folder.new_span(vi.span), } @@ -829,13 +855,19 @@ pub fn noop_fold_view_item(vi: &ViewItem, folder: &mut T) pub fn noop_fold_block(b: P, folder: &mut T) -> P { let id = folder.new_id(b.id); // Needs to be first, for ast_map. - let view_items = b.view_items.iter().map(|x| folder.fold_view_item(x)).collect(); - let stmts = b.stmts.iter().flat_map(|s| folder.fold_stmt(&**s).move_iter()).collect(); + let view_items = b.view_items + .iter() + .map(ref |x| folder.fold_view_item(x)) + .collect(); + let stmts = b.stmts + .iter() + .flat_map(ref |s| folder.fold_stmt(&**s).move_iter()) + .collect(); P(Block { id: id, view_items: view_items, stmts: stmts, - expr: b.expr.map(|x| folder.fold_expr(x)), + expr: b.expr.map(ref |x| folder.fold_expr(x)), rules: b.rules, span: folder.new_span(b.span), }) @@ -863,7 +895,7 @@ pub fn noop_fold_item_underscore(i: &Item_, folder: &mut T) -> Item_ ItemEnum(ref enum_definition, ref generics) => { ItemEnum( ast::EnumDef { - variants: enum_definition.variants.iter().map(|&x| { + variants: enum_definition.variants.iter().map(ref |&x| { folder.fold_variant(&*x) }).collect(), }, @@ -875,10 +907,10 @@ pub fn noop_fold_item_underscore(i: &Item_, folder: &mut T) -> Item_ } ItemImpl(ref generics, ref ifce, ty, ref impl_items) => { ItemImpl(folder.fold_generics(generics), - ifce.as_ref().map(|p| folder.fold_trait_ref(p)), + ifce.as_ref().map(ref |p| folder.fold_trait_ref(p)), folder.fold_ty(ty), impl_items.iter() - .flat_map(|impl_item| { + .flat_map(ref |impl_item| { match *impl_item { MethodImplItem(x) => { folder.fold_method(x) @@ -890,7 +922,7 @@ pub fn noop_fold_item_underscore(i: &Item_, folder: &mut T) -> Item_ ) } ItemTrait(ref generics, ref unbound, ref traits, ref methods) => { - let methods = methods.iter().flat_map(|method| { + let methods = methods.iter().flat_map(ref |method| { let r = match *method { RequiredMethod(ref m) => { SmallVector::one(RequiredMethod( @@ -903,7 +935,7 @@ pub fn noop_fold_item_underscore(i: &Item_, folder: &mut T) -> Item_ // don't unify. let methods : SmallVector = folder.fold_method(method).move_iter() - .map(|m| ProvidedMethod(m)).collect(); + .map(ref |m| ProvidedMethod(m)).collect(); methods.move_iter() } }; @@ -911,7 +943,9 @@ pub fn noop_fold_item_underscore(i: &Item_, folder: &mut T) -> Item_ }).collect(); ItemTrait(folder.fold_generics(generics), unbound.clone(), - traits.iter().map(|p| folder.fold_trait_ref(p)).collect(), + traits.iter() + .map(ref |p| folder.fold_trait_ref(p)) + .collect(), methods) } ItemMac(ref m) => ItemMac(folder.fold_mac(m)), @@ -923,7 +957,7 @@ pub fn noop_fold_type_method(m: &TypeMethod, fld: &mut T) -> TypeMeth TypeMethod { id: id, ident: fld.fold_ident(m.ident), - attrs: m.attrs.iter().map(|a| fld.fold_attribute(*a)).collect(), + attrs: m.attrs.iter().map(ref |a| fld.fold_attribute(*a)).collect(), fn_style: m.fn_style, abi: m.abi, decl: fld.fold_fn_decl(&*m.decl), @@ -939,16 +973,25 @@ pub fn noop_fold_mod(m: &Mod, folder: &mut T) -> Mod { inner: folder.new_span(m.inner), view_items: m.view_items .iter() - .map(|x| folder.fold_view_item(x)).collect(), - items: m.items.iter().flat_map(|x| folder.fold_item(*x).move_iter()).collect(), + .map(ref |x| folder.fold_view_item(x)).collect(), + items: m.items + .iter() + .flat_map(ref |x| folder.fold_item(*x).move_iter()) + .collect(), } } pub fn noop_fold_crate(c: Crate, folder: &mut T) -> Crate { Crate { module: folder.fold_mod(&c.module), - attrs: c.attrs.iter().map(|x| folder.fold_attribute(*x)).collect(), - config: c.config.iter().map(|x| box (GC) folder.fold_meta_item(&**x)).collect(), + attrs: c.attrs + .iter() + .map(ref |x| folder.fold_attribute(*x)) + .collect(), + config: c.config + .iter() + .map(ref |x| box (GC) folder.fold_meta_item(&**x)) + .collect(), span: folder.new_span(c.span), exported_macros: c.exported_macros } @@ -976,7 +1019,10 @@ pub fn noop_fold_item_simple(i: &Item, folder: &mut T) -> Item { Item { id: id, ident: folder.fold_ident(ident), - attrs: i.attrs.iter().map(|e| folder.fold_attribute(*e)).collect(), + attrs: i.attrs + .iter() + .map(ref |e| folder.fold_attribute(*e)) + .collect(), node: node, vis: i.vis, span: folder.new_span(i.span) @@ -989,11 +1035,17 @@ pub fn noop_fold_foreign_item(ni: &ForeignItem, box(GC) ForeignItem { id: id, ident: folder.fold_ident(ni.ident), - attrs: ni.attrs.iter().map(|x| folder.fold_attribute(*x)).collect(), + attrs: ni.attrs + .iter() + .map(ref |x| folder.fold_attribute(*x)) + .collect(), node: match ni.node { ForeignItemFn(ref fdec, ref generics) => { ForeignItemFn(P(FnDecl { - inputs: fdec.inputs.iter().map(|a| folder.fold_arg(a)).collect(), + inputs: fdec.inputs + .iter() + .map(ref |a| folder.fold_arg(a)) + .collect(), output: folder.fold_ty(fdec.output), cf: fdec.cf, variadic: fdec.variadic @@ -1013,7 +1065,10 @@ pub fn noop_fold_foreign_item(ni: &ForeignItem, pub fn noop_fold_method(m: &Method, folder: &mut T) -> SmallVector> { let id = folder.new_id(m.id); // Needs to be first, for ast_map. SmallVector::one(box(GC) Method { - attrs: m.attrs.iter().map(|a| folder.fold_attribute(*a)).collect(), + attrs: m.attrs + .iter() + .map(ref |a| folder.fold_attribute(*a)) + .collect(), id: id, span: folder.new_span(m.span), node: match m.node { @@ -1047,16 +1102,20 @@ pub fn noop_fold_pat(p: Gc, folder: &mut T) -> Gc { PatIdent(binding_mode, Spanned{span: folder.new_span(pth1.span), node: folder.fold_ident(pth1.node)}, - sub.map(|x| folder.fold_pat(x))) + sub.map(ref |x| folder.fold_pat(x))) } PatLit(e) => PatLit(folder.fold_expr(e)), PatEnum(ref pth, ref pats) => { PatEnum(folder.fold_path(pth), - pats.as_ref().map(|pats| pats.iter().map(|x| folder.fold_pat(*x)).collect())) + pats.as_ref() + .map(ref |pats| { + pats.iter() + .map(ref |x| folder.fold_pat(*x)).collect() + })) } PatStruct(ref pth, ref fields, etc) => { let pth_ = folder.fold_path(pth); - let fs = fields.iter().map(|f| { + let fs = fields.iter().map(ref |f| { ast::FieldPat { ident: f.ident, pat: folder.fold_pat(f.pat) @@ -1064,16 +1123,18 @@ pub fn noop_fold_pat(p: Gc, folder: &mut T) -> Gc { }).collect(); PatStruct(pth_, fs, etc) } - PatTup(ref elts) => PatTup(elts.iter().map(|x| folder.fold_pat(*x)).collect()), + PatTup(ref elts) => { + PatTup(elts.iter().map(ref |x| folder.fold_pat(*x)).collect()) + } PatBox(inner) => PatBox(folder.fold_pat(inner)), PatRegion(inner) => PatRegion(folder.fold_pat(inner)), PatRange(e1, e2) => { PatRange(folder.fold_expr(e1), folder.fold_expr(e2)) }, PatVec(ref before, ref slice, ref after) => { - PatVec(before.iter().map(|x| folder.fold_pat(*x)).collect(), - slice.map(|x| folder.fold_pat(x)), - after.iter().map(|x| folder.fold_pat(*x)).collect()) + PatVec(before.iter().map(ref |x| folder.fold_pat(*x)).collect(), + slice.map(ref |x| folder.fold_pat(x)), + after.iter().map(ref |x| folder.fold_pat(*x)).collect()) } PatMac(ref mac) => PatMac(folder.fold_mac(mac)), }; @@ -1095,21 +1156,23 @@ pub fn noop_fold_expr(e: Gc, folder: &mut T) -> Gc { ExprBox(folder.fold_expr(p), folder.fold_expr(e)) } ExprVec(ref exprs) => { - ExprVec(exprs.iter().map(|&x| folder.fold_expr(x)).collect()) + ExprVec(exprs.iter().map(ref |&x| folder.fold_expr(x)).collect()) } ExprRepeat(expr, count) => { ExprRepeat(folder.fold_expr(expr), folder.fold_expr(count)) } - ExprTup(ref elts) => ExprTup(elts.iter().map(|x| folder.fold_expr(*x)).collect()), + ExprTup(ref elts) => ExprTup(elts.iter() + .map(ref |x| folder.fold_expr(*x)) + .collect()), ExprCall(f, ref args) => { ExprCall(folder.fold_expr(f), - args.iter().map(|&x| folder.fold_expr(x)).collect()) + args.iter().map(ref |&x| folder.fold_expr(x)).collect()) } ExprMethodCall(i, ref tps, ref args) => { ExprMethodCall( respan(i.span, folder.fold_ident(i.node)), - tps.iter().map(|&x| folder.fold_ty(x)).collect(), - args.iter().map(|&x| folder.fold_expr(x)).collect()) + tps.iter().map(ref |&x| folder.fold_ty(x)).collect(), + args.iter().map(ref |&x| folder.fold_expr(x)).collect()) } ExprBinary(binop, lhs, rhs) => { ExprBinary(binop, @@ -1127,7 +1190,7 @@ pub fn noop_fold_expr(e: Gc, folder: &mut T) -> Gc { ExprIf(cond, tr, fl) => { ExprIf(folder.fold_expr(cond), folder.fold_block(tr), - fl.map(|x| folder.fold_expr(x))) + fl.map(ref |x| folder.fold_expr(x))) } ExprWhile(cond, body) => { ExprWhile(folder.fold_expr(cond), folder.fold_block(body)) @@ -1136,15 +1199,15 @@ pub fn noop_fold_expr(e: Gc, folder: &mut T) -> Gc { ExprForLoop(folder.fold_pat(pat), folder.fold_expr(iter), folder.fold_block(body), - maybe_ident.map(|i| folder.fold_ident(i))) + maybe_ident.map(ref |i| folder.fold_ident(i))) } ExprLoop(body, opt_ident) => { ExprLoop(folder.fold_block(body), - opt_ident.map(|x| folder.fold_ident(x))) + opt_ident.map(ref |x| folder.fold_ident(x))) } ExprMatch(expr, ref arms) => { ExprMatch(folder.fold_expr(expr), - arms.iter().map(|x| folder.fold_arm(x)).collect()) + arms.iter().map(ref |x| folder.fold_arm(x)).collect()) } ExprFnBlock(capture_clause, ref decl, ref body) => { ExprFnBlock(capture_clause, @@ -1173,23 +1236,27 @@ pub fn noop_fold_expr(e: Gc, folder: &mut T) -> Gc { ExprField(el, id, ref tys) => { ExprField(folder.fold_expr(el), respan(id.span, folder.fold_ident(id.node)), - tys.iter().map(|&x| folder.fold_ty(x)).collect()) + tys.iter().map(ref |&x| folder.fold_ty(x)).collect()) } ExprIndex(el, er) => { ExprIndex(folder.fold_expr(el), folder.fold_expr(er)) } ExprPath(ref pth) => ExprPath(folder.fold_path(pth)), - ExprBreak(opt_ident) => ExprBreak(opt_ident.map(|x| folder.fold_ident(x))), - ExprAgain(opt_ident) => ExprAgain(opt_ident.map(|x| folder.fold_ident(x))), + ExprBreak(opt_ident) => { + ExprBreak(opt_ident.map(ref |x| folder.fold_ident(x))) + } + ExprAgain(opt_ident) => { + ExprAgain(opt_ident.map(ref |x| folder.fold_ident(x))) + } ExprRet(ref e) => { - ExprRet(e.map(|x| folder.fold_expr(x))) + ExprRet(e.map(ref |x| folder.fold_expr(x))) } ExprInlineAsm(ref a) => { ExprInlineAsm(InlineAsm { - inputs: a.inputs.iter().map(|&(ref c, input)| { + inputs: a.inputs.iter().map(ref |&(ref c, input)| { ((*c).clone(), folder.fold_expr(input)) }).collect(), - outputs: a.outputs.iter().map(|&(ref c, out)| { + outputs: a.outputs.iter().map(ref |&(ref c, out)| { ((*c).clone(), folder.fold_expr(out)) }).collect(), .. (*a).clone() @@ -1198,8 +1265,9 @@ pub fn noop_fold_expr(e: Gc, folder: &mut T) -> Gc { ExprMac(ref mac) => ExprMac(folder.fold_mac(mac)), ExprStruct(ref path, ref fields, maybe_expr) => { ExprStruct(folder.fold_path(path), - fields.iter().map(|x| folder.fold_field(*x)).collect(), - maybe_expr.map(|x| folder.fold_expr(x))) + fields.iter() + .map(ref |x| folder.fold_field(*x)).collect(), + maybe_expr.map(ref |x| folder.fold_expr(x))) }, ExprParen(ex) => ExprParen(folder.fold_expr(ex)) }; @@ -1217,7 +1285,7 @@ pub fn noop_fold_stmt(s: &Stmt, StmtDecl(d, id) => { let id = folder.new_id(id); folder.fold_decl(d).move_iter() - .map(|d| StmtDecl(d, id)) + .map(ref |d| StmtDecl(d, id)) .collect() } StmtExpr(e, id) => { @@ -1228,10 +1296,12 @@ pub fn noop_fold_stmt(s: &Stmt, let id = folder.new_id(id); SmallVector::one(StmtSemi(folder.fold_expr(e), id)) } - StmtMac(ref mac, semi) => SmallVector::one(StmtMac(folder.fold_mac(mac), semi)) + StmtMac(ref mac, semi) => { + SmallVector::one(StmtMac(folder.fold_mac(mac), semi)) + } }; - nodes.move_iter().map(|node| box(GC) Spanned { + nodes.move_iter().map(ref |node| box(GC) Spanned { node: node, span: folder.new_span(s.span), }).collect() @@ -1289,7 +1359,7 @@ mod test { assert_pred!( matches_codepattern, "matches_codepattern", - pprust::to_string(|s| fake_print_crate(s, &folded_crate)), + pprust::to_string(ref |s| fake_print_crate(s, &folded_crate)), "#[a]mod zz{fn zz(zz:zz,zz:zz){zz!(zz,zz,zz);zz;zz}}".to_string()); } @@ -1303,7 +1373,7 @@ mod test { assert_pred!( matches_codepattern, "matches_codepattern", - pprust::to_string(|s| fake_print_crate(s, &folded_crate)), + pprust::to_string(ref |s| fake_print_crate(s, &folded_crate)), "zz!zz((zz$zz:zz$(zz $zz:zz)zz+=>(zz$(zz$zz$zz)+)))".to_string()); } } diff --git a/src/libsyntax/parse/lexer/comments.rs b/src/libsyntax/parse/lexer/comments.rs index c53638ed07d13..ed859443e78ff 100644 --- a/src/libsyntax/parse/lexer/comments.rs +++ b/src/libsyntax/parse/lexer/comments.rs @@ -368,7 +368,7 @@ pub fn gather_comments_and_literals(span_diagnostic: &diagnostic::SpanHandler, //discard, and look ahead; we're working with internal state let TokenAndSpan {tok: tok, sp: sp} = rdr.peek(); if token::is_lit(&tok) { - rdr.with_str_from(bstart, |s| { + rdr.with_str_from(bstart, ref |s| { debug!("tok lit: {}", s); literals.push(Literal {lit: s.to_string(), pos: sp.lo}); }) diff --git a/src/libsyntax/parse/lexer/mod.rs b/src/libsyntax/parse/lexer/mod.rs index 1724962898978..b9c708872f3f2 100644 --- a/src/libsyntax/parse/lexer/mod.rs +++ b/src/libsyntax/parse/lexer/mod.rs @@ -180,7 +180,7 @@ impl<'a> StringReader<'a> { fn fatal_span_char(&self, from_pos: BytePos, to_pos: BytePos, m: &str, c: char) -> ! { let mut m = m.to_string(); m.push_str(": "); - char::escape_default(c, |c| m.push_char(c)); + char::escape_default(c, ref |c| m.push_char(c)); self.fatal_span_(from_pos, to_pos, m.as_slice()); } @@ -189,7 +189,7 @@ impl<'a> StringReader<'a> { fn err_span_char(&self, from_pos: BytePos, to_pos: BytePos, m: &str, c: char) { let mut m = m.to_string(); m.push_str(": "); - char::escape_default(c, |c| m.push_char(c)); + char::escape_default(c, ref |c| m.push_char(c)); self.err_span_(from_pos, to_pos, m.as_slice()); } @@ -393,7 +393,7 @@ impl<'a> StringReader<'a> { } self.bump(); } - return self.with_str_from(start_bpos, |string| { + return self.with_str_from(start_bpos, ref |string| { // but comments with only more "/"s are not let tok = if is_doc_comment(string) { token::DOC_COMMENT(token::intern(string)) @@ -512,7 +512,7 @@ impl<'a> StringReader<'a> { self.bump(); } - self.with_str_from(start_bpos, |string| { + self.with_str_from(start_bpos, ref |string| { // but comments with only "*"s between two "/"s are not let tok = if is_block_doc_comment(string) { let string = if has_cr { @@ -575,8 +575,8 @@ impl<'a> StringReader<'a> { // find the integer representing the name self.scan_digits(base); - let encoded_name : u32 = self.with_str_from(start_bpos, |s| { - num::from_str_radix(s, 10).unwrap_or_else(|| { + let encoded_name : u32 = self.with_str_from(start_bpos, ref |s| { + num::from_str_radix(s, 10).unwrap_or_else(ref || { fail!("expected digits representing a name, got `{}`, {}, range [{},{}]", s, whence, start_bpos, self.last_pos); }) @@ -593,8 +593,9 @@ impl<'a> StringReader<'a> { // find the integer representing the ctxt let start_bpos = self.last_pos; self.scan_digits(base); - let encoded_ctxt : ast::SyntaxContext = self.with_str_from(start_bpos, |s| { - num::from_str_radix(s, 10).unwrap_or_else(|| { + let encoded_ctxt : ast::SyntaxContext = self.with_str_from(start_bpos, + ref |s| { + num::from_str_radix(s, 10).unwrap_or_else(ref || { fail!("expected digits representing a ctxt, got `{}`, {}", s, whence); }) }); @@ -724,7 +725,7 @@ impl<'a> StringReader<'a> { } let c = self.curr.unwrap_or('\x00'); accum_int *= 16; - accum_int += c.to_digit(16).unwrap_or_else(|| { + accum_int += c.to_digit(16).unwrap_or_else(ref || { self.err_span_char(self.last_pos, self.pos, "illegal character in numeric character escape", c); 0 @@ -917,7 +918,7 @@ impl<'a> StringReader<'a> { self.bump(); } - return self.with_str_from(start, |string| { + return self.with_str_from(start, ref |string| { if string == "_" { token::UNDERSCORE } else { @@ -1045,14 +1046,14 @@ impl<'a> StringReader<'a> { // Include the leading `'` in the real identifier, for macro // expansion purposes. See #12512 for the gory details of why // this is necessary. - let ident = self.with_str_from(start, |lifetime_name| { + let ident = self.with_str_from(start, ref |lifetime_name| { str_to_ident(format!("'{}", lifetime_name).as_slice()) }); // Conjure up a "keyword checking ident" to make sure that // the lifetime name is not a keyword. let keyword_checking_ident = - self.with_str_from(start, |lifetime_name| { + self.with_str_from(start, ref |lifetime_name| { str_to_ident(lifetime_name) }); let keyword_checking_token = diff --git a/src/libsyntax/parse/parser.rs b/src/libsyntax/parse/parser.rs index 9e2829e638050..4b429b5e9f885 100644 --- a/src/libsyntax/parse/parser.rs +++ b/src/libsyntax/parse/parser.rs @@ -2053,8 +2053,7 @@ impl<'a> Parser<'a> { let remaining_exprs = self.parse_seq_to_end( &token::RBRACKET, seq_sep_trailing_allowed(token::COMMA), - |p| p.parse_expr() - ); + ref |p| p.parse_expr()); let mut exprs = vec!(first_expr); exprs.push_all_move(remaining_exprs); ex = ExprVec(exprs); @@ -2159,7 +2158,7 @@ impl<'a> Parser<'a> { self.bump(); let ket = token::close_delimiter_for(&self.token) - .unwrap_or_else(|| { + .unwrap_or_else(ref || { self.fatal("expected open delimiter") }); self.bump(); @@ -2167,7 +2166,7 @@ impl<'a> Parser<'a> { let tts = self.parse_seq_to_end( &ket, seq_sep_none(), - |p| p.parse_token_tree()); + ref |p| p.parse_token_tree()); let hi = self.span.hi; return self.mk_mac_expr(lo, @@ -3145,12 +3144,15 @@ impl<'a> Parser<'a> { if self.eat(&token::NOT) { // macro invocation let ket = token::close_delimiter_for(&self.token) - .unwrap_or_else(|| self.fatal("expected open delimiter")); + .unwrap_or_else(ref || { + self.fatal("expected open delimiter") + }); self.bump(); - let tts = self.parse_seq_to_end(&ket, - seq_sep_none(), - |p| p.parse_token_tree()); + let tts = + self.parse_seq_to_end(&ket, + seq_sep_none(), + ref |p| p.parse_token_tree()); let mac = MacInvocTT(ident_to_path(id_span,id), tts, EMPTY_CTXT); pat = ast::PatMac(codemap::Spanned {node: mac, span: self.span}); @@ -3755,7 +3757,7 @@ impl<'a> Parser<'a> { if self.eat(&token::LT) { let lifetime_defs = self.parse_lifetime_defs(); let mut seen_default = false; - let ty_params = self.parse_seq_to_gt(Some(token::COMMA), |p| { + let ty_params = self.parse_seq_to_gt(Some(token::COMMA), ref |p| { p.forbid_lifetime(); let ty_param = p.parse_ty_param(); if ty_param.default.is_some() { @@ -4236,7 +4238,7 @@ impl<'a> Parser<'a> { self.bump(); self.parse_seq_to_end(&ket, seq_sep_none(), - |p| p.parse_token_tree()) + ref |p| p.parse_token_tree()) } None => self.fatal("expected open delimiter") }; @@ -4260,9 +4262,8 @@ impl<'a> Parser<'a> { let fn_style = self.parse_fn_style(); let ident = self.parse_ident(); let mut generics = self.parse_generics(); - let (explicit_self, decl) = self.parse_fn_decl_with_self(|p| { - p.parse_arg() - }); + let (explicit_self, decl) = + self.parse_fn_decl_with_self(ref |p| p.parse_arg()); self.parse_where_clause(&mut generics); let (inner_attrs, body) = self.parse_inner_attrs_and_block(); let new_attrs = attrs.append(inner_attrs.as_slice()); @@ -4431,17 +4432,17 @@ impl<'a> Parser<'a> { &token::LPAREN, &token::RPAREN, seq_sep_trailing_allowed(token::COMMA), - |p| { - let attrs = p.parse_outer_attributes(); - let lo = p.span.lo; - let struct_field_ = ast::StructField_ { - kind: UnnamedField(p.parse_visibility()), - id: ast::DUMMY_NODE_ID, - ty: p.parse_ty(true), - attrs: attrs, - }; - spanned(lo, p.span.hi, struct_field_) - }); + ref |p| { + let attrs = p.parse_outer_attributes(); + let lo = p.span.lo; + let struct_field_ = ast::StructField_ { + kind: UnnamedField(p.parse_visibility()), + id: ast::DUMMY_NODE_ID, + ty: p.parse_ty(true), + attrs: attrs, + }; + spanned(lo, p.span.hi, struct_field_) + }); if fields.len() == 0 { self.fatal(format!("unit-like struct definition should be \ written as `struct {};`", @@ -4711,7 +4712,7 @@ impl<'a> Parser<'a> { name: String, id_sp: Span) -> (ast::Item_, Vec ) { let mut included_mod_stack = self.sess.included_mod_stack.borrow_mut(); - match included_mod_stack.iter().position(|p| *p == path) { + match included_mod_stack.iter().position(ref |p| *p == path) { Some(i) => { let mut err = String::from_str("circular modules: "); let len = included_mod_stack.len(); @@ -5300,7 +5301,7 @@ impl<'a> Parser<'a> { self.bump(); self.parse_seq_to_end(&ket, seq_sep_none(), - |p| p.parse_token_tree()) + ref |p| p.parse_token_tree()) } None => self.fatal("expected open delimiter") }; diff --git a/src/libsyntax/print/pprust.rs b/src/libsyntax/print/pprust.rs index 26d425563d09f..51abf15ae1965 100644 --- a/src/libsyntax/print/pprust.rs +++ b/src/libsyntax/print/pprust.rs @@ -2501,7 +2501,7 @@ impl<'a> State<'a> { try!(self.pclose()); } - opt_bounds.as_ref().map(|bounds| { + opt_bounds.as_ref().map(ref |bounds| { self.print_bounds(opt_region, bounds, true, false) }); @@ -2585,13 +2585,13 @@ impl<'a> State<'a> { ast::LitStr(ref st, style) => self.print_string(st.get(), style), ast::LitByte(byte) => { let mut res = String::from_str("b'"); - (byte as char).escape_default(|c| res.push_char(c)); + (byte as char).escape_default(ref |c| res.push_char(c)); res.push_char('\''); word(&mut self.s, res.as_slice()) } ast::LitChar(ch) => { let mut res = String::from_str("'"); - ch.escape_default(|c| res.push_char(c)); + ch.escape_default(ref |c| res.push_char(c)); res.push_char('\''); word(&mut self.s, res.as_slice()) } diff --git a/src/libtest/lib.rs b/src/libtest/lib.rs index 46e2ca03ef6ed..7805ab7da72df 100644 --- a/src/libtest/lib.rs +++ b/src/libtest/lib.rs @@ -820,14 +820,14 @@ pub fn run_tests_console(opts: &TestOpts, tests: Vec ) -> io::IoR PadOnLeft | PadOnRight => t.desc.name.as_slice().len(), } } - match tests.iter().max_by(|t|len_if_padded(*t)) { + match tests.iter().max_by(ref |t| len_if_padded(*t)) { Some(t) => { let n = t.desc.name.as_slice(); st.max_name_len = n.len(); }, None => {} } - try!(run_tests(opts, tests, |x| callback(&x, &mut st))); + try!(run_tests(opts, tests, ref |x| callback(&x, &mut st))); match opts.save_metrics { None => (), Some(ref pth) => { @@ -1306,7 +1306,7 @@ impl Bencher { // Initial bench run to get ballpark figure. let mut n = 1_u64; - self.bench_n(n, |x| f(x)); + self.bench_n(n, ref |x| f(x)); // Try to estimate iter count for 1ms falling back to 1m // iterations if first run took < 1ns. @@ -1328,7 +1328,7 @@ impl Bencher { let loop_start = precise_time_ns(); for p in samples.mut_iter() { - self.bench_n(n, |x| f(x)); + self.bench_n(n, ref |x| f(x)); *p = self.ns_per_iter() as f64; }; @@ -1336,7 +1336,7 @@ impl Bencher { let summ = stats::Summary::new(samples); for p in samples.mut_iter() { - self.bench_n(5 * n, |x| f(x)); + self.bench_n(5 * n, ref |x| f(x)); *p = self.ns_per_iter() as f64; }; diff --git a/src/libtest/stats.rs b/src/libtest/stats.rs index 9af28e771e1fb..5b24490259f56 100644 --- a/src/libtest/stats.rs +++ b/src/libtest/stats.rs @@ -1058,7 +1058,7 @@ mod bench { #[bench] pub fn sum_three_items(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { [1e20f64, 1.5f64, -1e20f64].sum(); }) } @@ -1067,7 +1067,7 @@ mod bench { let nums = [-1e30f64, 1e60, 1e30, 1.0, -1e60]; let v = Vec::from_fn(500, |i| nums[i%5]); - b.iter(|| { + b.iter(ref || { v.as_slice().sum(); }) } diff --git a/src/libtime/lib.rs b/src/libtime/lib.rs index d0b4c6b1e4c74..3d720a7618eef 100644 --- a/src/libtime/lib.rs +++ b/src/libtime/lib.rs @@ -571,21 +571,21 @@ pub fn strptime(s: &str, format: &str) -> Result { }, 'c' => { parse_type(s, pos, 'a', &mut *tm) - .and_then(|pos| parse_char(s, pos, ' ')) - .and_then(|pos| parse_type(s, pos, 'b', &mut *tm)) - .and_then(|pos| parse_char(s, pos, ' ')) - .and_then(|pos| parse_type(s, pos, 'e', &mut *tm)) - .and_then(|pos| parse_char(s, pos, ' ')) - .and_then(|pos| parse_type(s, pos, 'T', &mut *tm)) - .and_then(|pos| parse_char(s, pos, ' ')) - .and_then(|pos| parse_type(s, pos, 'Y', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ' ')) + .and_then(ref |pos| parse_type(s, pos, 'b', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ' ')) + .and_then(ref |pos| parse_type(s, pos, 'e', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ' ')) + .and_then(ref |pos| parse_type(s, pos, 'T', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ' ')) + .and_then(ref |pos| parse_type(s, pos, 'Y', &mut *tm)) } 'D' | 'x' => { parse_type(s, pos, 'm', &mut *tm) - .and_then(|pos| parse_char(s, pos, '/')) - .and_then(|pos| parse_type(s, pos, 'd', &mut *tm)) - .and_then(|pos| parse_char(s, pos, '/')) - .and_then(|pos| parse_type(s, pos, 'y', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, '/')) + .and_then(ref |pos| parse_type(s, pos, 'd', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, '/')) + .and_then(ref |pos| parse_type(s, pos, 'y', &mut *tm)) } 'd' => match match_digits_in_range(s, pos, 2u, false, 1_i32, 31_i32) { @@ -604,10 +604,10 @@ pub fn strptime(s: &str, format: &str) -> Result { } 'F' => { parse_type(s, pos, 'Y', &mut *tm) - .and_then(|pos| parse_char(s, pos, '-')) - .and_then(|pos| parse_type(s, pos, 'm', &mut *tm)) - .and_then(|pos| parse_char(s, pos, '-')) - .and_then(|pos| parse_type(s, pos, 'd', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, '-')) + .and_then(ref |pos| parse_type(s, pos, 'm', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, '-')) + .and_then(ref |pos| parse_type(s, pos, 'd', &mut *tm)) } 'H' => { match match_digits_in_range(s, pos, 2u, false, 0_i32, 23_i32) { @@ -682,17 +682,17 @@ pub fn strptime(s: &str, format: &str) -> Result { }, 'R' => { parse_type(s, pos, 'H', &mut *tm) - .and_then(|pos| parse_char(s, pos, ':')) - .and_then(|pos| parse_type(s, pos, 'M', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ':')) + .and_then(ref |pos| parse_type(s, pos, 'M', &mut *tm)) } 'r' => { parse_type(s, pos, 'I', &mut *tm) - .and_then(|pos| parse_char(s, pos, ':')) - .and_then(|pos| parse_type(s, pos, 'M', &mut *tm)) - .and_then(|pos| parse_char(s, pos, ':')) - .and_then(|pos| parse_type(s, pos, 'S', &mut *tm)) - .and_then(|pos| parse_char(s, pos, ' ')) - .and_then(|pos| parse_type(s, pos, 'p', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ':')) + .and_then(ref |pos| parse_type(s, pos, 'M', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ':')) + .and_then(ref |pos| parse_type(s, pos, 'S', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ' ')) + .and_then(ref |pos| parse_type(s, pos, 'p', &mut *tm)) } 'S' => { match match_digits_in_range(s, pos, 2u, false, 0_i32, 60_i32) { @@ -707,10 +707,10 @@ pub fn strptime(s: &str, format: &str) -> Result { //'s' {} 'T' | 'X' => { parse_type(s, pos, 'H', &mut *tm) - .and_then(|pos| parse_char(s, pos, ':')) - .and_then(|pos| parse_type(s, pos, 'M', &mut *tm)) - .and_then(|pos| parse_char(s, pos, ':')) - .and_then(|pos| parse_type(s, pos, 'S', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ':')) + .and_then(ref |pos| parse_type(s, pos, 'M', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, ':')) + .and_then(ref |pos| parse_type(s, pos, 'S', &mut *tm)) } 't' => parse_char(s, pos, '\t'), 'u' => { @@ -725,10 +725,10 @@ pub fn strptime(s: &str, format: &str) -> Result { } 'v' => { parse_type(s, pos, 'e', &mut *tm) - .and_then(|pos| parse_char(s, pos, '-')) - .and_then(|pos| parse_type(s, pos, 'b', &mut *tm)) - .and_then(|pos| parse_char(s, pos, '-')) - .and_then(|pos| parse_type(s, pos, 'Y', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, '-')) + .and_then(ref |pos| parse_type(s, pos, 'b', &mut *tm)) + .and_then(ref |pos| parse_char(s, pos, '-')) + .and_then(ref |pos| parse_type(s, pos, 'Y', &mut *tm)) } //'W' {} 'w' => { @@ -1575,6 +1575,6 @@ mod tests { #[bench] fn bench_precise_time_ns(b: &mut Bencher) { - b.iter(|| precise_time_ns()) + b.iter(ref || precise_time_ns()) } } diff --git a/src/libunicode/normalize.rs b/src/libunicode/normalize.rs index a60e95c38272b..2526979cb2a17 100644 --- a/src/libunicode/normalize.rs +++ b/src/libunicode/normalize.rs @@ -53,7 +53,7 @@ fn d(c: char, i: |char|, k: bool) { match bsearch_table(c, canonical_table) { Some(canon) => { for x in canon.iter() { - d(*x, |b| i(b), k); + d(*x, ref |b| i(b), k); } return; } @@ -67,7 +67,7 @@ fn d(c: char, i: |char|, k: bool) { match bsearch_table(c, compatibility_table) { Some(compat) => { for x in compat.iter() { - d(*x, |b| i(b), k); + d(*x, ref |b| i(b), k); } return; } diff --git a/src/liburl/lib.rs b/src/liburl/lib.rs index 9ced6cb62af00..7a86a9634dc5b 100644 --- a/src/liburl/lib.rs +++ b/src/liburl/lib.rs @@ -315,7 +315,7 @@ pub fn encode_form_urlencoded(m: &HashMap>) -> String { } let mut first = true; - m.iter().fold(String::new(), |mut out, (key, values)| { + m.iter().fold(String::new(), ref |mut out, (key, values)| { let key = encode_plus(key); for value in values.iter() { diff --git a/src/libuuid/lib.rs b/src/libuuid/lib.rs index 98dd129f3d251..ec7527c725f8d 100644 --- a/src/libuuid/lib.rs +++ b/src/libuuid/lib.rs @@ -843,7 +843,7 @@ mod bench { #[bench] pub fn create_uuids(b: &mut Bencher) { - b.iter(|| { + b.iter(ref || { Uuid::new_v4(); }) } @@ -851,7 +851,7 @@ mod bench { #[bench] pub fn uuid_to_string(b: &mut Bencher) { let u = Uuid::new_v4(); - b.iter(|| { + b.iter(ref || { u.to_string(); }) } @@ -859,7 +859,7 @@ mod bench { #[bench] pub fn parse_str(b: &mut Bencher) { let s = "urn:uuid:F9168C5E-CEB2-4faa-B6BF-329BF39FA1E4"; - b.iter(|| { + b.iter(ref || { Uuid::parse_string(s).unwrap(); }) } diff --git a/src/test/bench/core-map.rs b/src/test/bench/core-map.rs index 5044d82a6eabb..8118011e758bb 100644 --- a/src/test/bench/core-map.rs +++ b/src/test/bench/core-map.rs @@ -25,19 +25,19 @@ fn timed(label: &str, f: ||) { fn ascending>(map: &mut M, n_keys: uint) { println!(" Ascending integers:"); - timed("insert", || { + timed("insert", ref || { for i in range(0u, n_keys) { map.insert(i, i + 1); } }); - timed("search", || { + timed("search", ref || { for i in range(0u, n_keys) { assert_eq!(map.find(&i).unwrap(), &(i + 1)); } }); - timed("remove", || { + timed("remove", ref || { for i in range(0, n_keys) { assert!(map.remove(&i)); } @@ -47,19 +47,19 @@ fn ascending>(map: &mut M, n_keys: uint) { fn descending>(map: &mut M, n_keys: uint) { println!(" Descending integers:"); - timed("insert", || { + timed("insert", ref || { for i in range(0, n_keys).rev() { map.insert(i, i + 1); } }); - timed("search", || { + timed("search", ref || { for i in range(0, n_keys).rev() { assert_eq!(map.find(&i).unwrap(), &(i + 1)); } }); - timed("remove", || { + timed("remove", ref || { for i in range(0, n_keys) { assert!(map.remove(&i)); } @@ -67,19 +67,19 @@ fn descending>(map: &mut M, n_keys: uint) { } fn vector>(map: &mut M, n_keys: uint, dist: &[uint]) { - timed("insert", || { + timed("insert", ref || { for i in range(0u, n_keys) { map.insert(dist[i], i + 1); } }); - timed("search", || { + timed("search", ref || { for i in range(0u, n_keys) { assert_eq!(map.find(&dist[i]).unwrap(), &(i + 1)); } }); - timed("remove", || { + timed("remove", ref || { for i in range(0u, n_keys) { assert!(map.remove(&dist[i])); } diff --git a/src/test/bench/core-std.rs b/src/test/bench/core-std.rs index 9af3c0c6c8c1a..336db2238bb75 100644 --- a/src/test/bench/core-std.rs +++ b/src/test/bench/core-std.rs @@ -49,7 +49,9 @@ fn maybe_run_test(argv: &[String], name: String, test: ||) { if os::getenv("RUST_BENCH").is_some() { run_test = true } else if argv.len() > 0 { - run_test = argv.iter().any(|x| x == &"all".to_string()) || argv.iter().any(|x| x == &name) + run_test = argv.iter() + .any(ref |x| x == &"all".to_string()) || + argv.iter().any(ref |x| x == &name) } if !run_test { diff --git a/src/test/bench/shootout-chameneos-redux.rs b/src/test/bench/shootout-chameneos-redux.rs index 0c76d14852e08..943fec074cdb7 100644 --- a/src/test/bench/shootout-chameneos-redux.rs +++ b/src/test/bench/shootout-chameneos-redux.rs @@ -147,7 +147,7 @@ fn rendezvous(nn: uint, set: Vec) { // these channels will allow us to talk to each creature by 'name'/index let mut to_creature: Vec> = - set.iter().enumerate().map(|(ii, &col)| { + set.iter().enumerate().map(ref |(ii, &col)| { // create each creature as a listener with a port, and // give us a channel to talk to each let to_rendezvous = to_rendezvous.clone(); @@ -198,7 +198,7 @@ fn main() { } else { std::os::args().as_slice() .get(1) - .and_then(|arg| from_str(arg.as_slice())) + .and_then(ref |arg| from_str(arg.as_slice())) .unwrap_or(600) }; diff --git a/src/test/bench/shootout-k-nucleotide-pipes.rs b/src/test/bench/shootout-k-nucleotide-pipes.rs index 143175e558b6d..2585386f0e96f 100644 --- a/src/test/bench/shootout-k-nucleotide-pipes.rs +++ b/src/test/bench/shootout-k-nucleotide-pipes.rs @@ -44,8 +44,8 @@ fn sort_and_fmt(mm: &HashMap , uint>, total: uint) -> String { // sort by key, then by value fn sortKV(mut orig: Vec<(Vec ,f64)> ) -> Vec<(Vec ,f64)> { - orig.sort_by(|&(ref a, _), &(ref b, _)| a.cmp(b)); - orig.sort_by(|&(_, a), &(_, b)| f64_cmp(b, a)); + orig.sort_by(ref |&(ref a, _), &(ref b, _)| a.cmp(b)); + orig.sort_by(ref |&(_, a), &(_, b)| f64_cmp(b, a)); orig } @@ -120,7 +120,7 @@ fn make_sequence_processor(sz: uint, carry = windows_with_carry(carry.append(line.as_slice()).as_slice(), sz, - |window| { + ref |window| { update_freq(&mut freqs, window); total += 1u; }); @@ -155,9 +155,12 @@ fn main() { // initialize each sequence sorter let sizes = vec!(1u,2,3,4,6,12,18); - let mut streams = Vec::from_fn(sizes.len(), |_| Some(channel::())); + let mut streams = Vec::from_fn(sizes.len(), + ref |_| Some(channel::())); let mut from_child = Vec::new(); - let to_child = sizes.iter().zip(streams.mut_iter()).map(|(sz, stream_ref)| { + let to_child = sizes.iter() + .zip(streams.mut_iter()) + .map(ref |(sz, stream_ref)| { let sz = *sz; let stream = replace(stream_ref, None); let (to_parent_, from_child_) = stream.unwrap(); diff --git a/src/test/bench/shootout-k-nucleotide.rs b/src/test/bench/shootout-k-nucleotide.rs index 59cbc6bc0043e..208fc52daf33d 100644 --- a/src/test/bench/shootout-k-nucleotide.rs +++ b/src/test/bench/shootout-k-nucleotide.rs @@ -75,7 +75,7 @@ impl Code { } fn pack(string: &str) -> Code { - string.bytes().fold(Code(0u64), |a, b| a.push_char(b)) + string.bytes().fold(Code(0u64), ref |a, b| a.push_char(b)) } fn unpack(&self, frame: uint) -> String { @@ -133,7 +133,7 @@ impl Table { fn new() -> Table { Table { count: 0, - items: Vec::from_fn(TABLE_SIZE, |_| None), + items: Vec::from_fn(TABLE_SIZE, ref |_| None), } } @@ -278,8 +278,8 @@ fn print_occurrences(frequencies: &mut Table, occurrence: &'static str) { fn get_sequence(r: &mut R, key: &str) -> Vec { let mut res = Vec::new(); - for l in r.lines().map(|l| l.ok().unwrap()) - .skip_while(|l| key != l.as_slice().slice_to(key.len())).skip(1) + for l in r.lines().map(ref |l| l.ok().unwrap()) + .skip_while(ref |l| key != l.as_slice().slice_to(key.len())).skip(1) { res.push_all(l.as_slice().trim().as_bytes()); } @@ -298,11 +298,11 @@ fn main() { }; let input = Arc::new(input); - let nb_freqs: Vec<(uint, Future)> = range(1u, 3).map(|i| { + let nb_freqs: Vec<(uint, Future
)> = range(1u, 3).map(ref |i| { let input = input.clone(); (i, Future::spawn(proc() generate_frequencies(input.as_slice(), i))) }).collect(); - let occ_freqs: Vec> = OCCURRENCES.iter().map(|&occ| { + let occ_freqs: Vec> = OCCURRENCES.iter().map(ref |&occ| { let input = input.clone(); Future::spawn(proc() generate_frequencies(input.as_slice(), occ.len())) }).collect(); diff --git a/src/test/bench/shootout-meteor.rs b/src/test/bench/shootout-meteor.rs index 9be111f55ae09..1bfeaed301c63 100644 --- a/src/test/bench/shootout-meteor.rs +++ b/src/test/bench/shootout-meteor.rs @@ -105,17 +105,19 @@ impl<'a, T> Iterator<&'a T> for ListIterator<'a, T> { fn transform(piece: Vec<(int, int)> , all: bool) -> Vec> { let mut res: Vec> = // rotations - iterate(piece, |rot| rot.iter().map(|&(y, x)| (x + y, -y)).collect()) + iterate(piece, + ref |rot| rot.iter().map(ref |&(y, x)| (x + y, -y)).collect()) .take(if all {6} else {3}) // mirror - .flat_map(|cur_piece| { - iterate(cur_piece, |mir| mir.iter().map(|&(y, x)| (x, y)).collect()) + .flat_map(ref |cur_piece| { + iterate(cur_piece, + ref |mir| mir.iter().map(ref |&(y, x)| (x, y)).collect()) .take(2) }).collect(); // translating to (0, 0) as minimum coordinates. for cur_piece in res.mut_iter() { - let (dy, dx) = *cur_piece.iter().min_by(|e| *e).unwrap(); + let (dy, dx) = *cur_piece.iter().min_by(ref |e| *e).unwrap(); for &(ref mut y, ref mut x) in cur_piece.mut_iter() { *y -= dy; *x -= dx; } @@ -164,12 +166,12 @@ fn make_masks() -> Vec > > { // here). let transforms: Vec>> = pieces.move_iter().enumerate() - .map(|(id, p)| transform(p, id != 3)) + .map(ref |(id, p)| transform(p, id != 3)) .collect(); - range(0i, 50).map(|yx| { - transforms.iter().enumerate().map(|(id, t)| { - t.iter().filter_map(|p| mask(yx / 5, yx % 5, id, p)).collect() + range(0i, 50).map(ref |yx| { + transforms.iter().enumerate().map(ref |(id, t)| { + t.iter().filter_map(ref |p| mask(yx / 5, yx % 5, id, p)).collect() }).collect() }).collect() } @@ -200,8 +202,8 @@ fn filter_masks(masks: &mut Vec>>) { for i in range(0, masks.len()) { for j in range(0, masks.get(i).len()) { *masks.get_mut(i).get_mut(j) = - masks.get(i).get(j).iter().map(|&m| m) - .filter(|&m| !is_board_unfeasible(m, masks)) + masks.get(i).get(j).iter().map(ref |&m| m) + .filter(ref |&m| !is_board_unfeasible(m, masks)) .collect(); } } @@ -268,7 +270,7 @@ fn handle_sol(raw_sol: &List, data: &mut Data) { // reverse order, i.e. the board rotated by half a turn. data.nb += 2; let sol1 = to_vec(raw_sol); - let sol2: Vec = sol1.iter().rev().map(|x| *x).collect(); + let sol2: Vec = sol1.iter().rev().map(ref |x| *x).collect(); if data.nb == 2 { data.min = sol1.clone(); @@ -295,9 +297,9 @@ fn search( let masks_at = masks.get(i); // for every unused piece - for id in range(0u, 10).filter(|id| board & (1 << (id + 50)) == 0) { + for id in range(0u, 10).filter(ref |id| board & (1 << (id + 50)) == 0) { // for each mask that fits on the board - for m in masks_at.get(id).iter().filter(|&m| board & *m == 0) { + for m in masks_at.get(id).iter().filter(ref |&m| board & *m == 0) { // This check is too costly. //if is_board_unfeasible(board | m, masks) {continue;} search(masks, board | *m, i + 1, Cons(*m, &cur), data); @@ -311,7 +313,7 @@ fn par_search(masks: Vec>>) -> Data { // launching the search in parallel on every masks at minimum // coordinate (0,0) - for m in masks.get(0).iter().flat_map(|masks_pos| masks_pos.iter()) { + for m in masks.get(0).iter().flat_map(ref |masks_pos| masks_pos.iter()) { let masks = masks.clone(); let tx = tx.clone(); let m = *m; diff --git a/src/test/compile-fail/borrowck-assign-comp-idx.rs b/src/test/compile-fail/borrowck-assign-comp-idx.rs index 143ebdaa77399..f24c06cb0803e 100644 --- a/src/test/compile-fail/borrowck-assign-comp-idx.rs +++ b/src/test/compile-fail/borrowck-assign-comp-idx.rs @@ -34,14 +34,14 @@ fn b() { borrow( p.as_slice(), - || *p.get_mut(0) = 5); //~ ERROR cannot borrow `p` as mutable + ref || *p.get_mut(0) = 5); //~ ERROR cannot borrow `p` as mutable } fn c() { // Legal because the scope of the borrow does not include the // modification: let mut p = vec!(1); - borrow(p.as_slice(), ||{}); + borrow(p.as_slice(), ref ||{}); *p.get_mut(0) = 5; } diff --git a/src/test/compile-fail/borrowck-autoref-3261.rs b/src/test/compile-fail/borrowck-autoref-3261.rs index 2a2a3dee1dfa6..3c33cd830d782 100644 --- a/src/test/compile-fail/borrowck-autoref-3261.rs +++ b/src/test/compile-fail/borrowck-autoref-3261.rs @@ -22,7 +22,7 @@ impl X { fn main() { let mut x = X(Right(main)); (&mut x).with( - |opt| { //~ ERROR cannot borrow `x` as mutable more than once at a time + ref |opt| { //~ ERROR cannot borrow `x` as mutable more than once at a time match opt { &Right(ref f) => { x = X(Left((0,0))); diff --git a/src/test/compile-fail/borrowck-block-unint.rs b/src/test/compile-fail/borrowck-block-unint.rs index a37717ed5d998..1c0e900647210 100644 --- a/src/test/compile-fail/borrowck-block-unint.rs +++ b/src/test/compile-fail/borrowck-block-unint.rs @@ -11,7 +11,7 @@ fn force(f: ||) { f(); } fn main() { let x: int; - force(|| { //~ ERROR capture of possibly uninitialized variable: `x` + force(ref || { //~ ERROR capture of possibly uninitialized variable: `x` println!("{}", x); }); } diff --git a/src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs b/src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs index 002ae5a7d28b4..66a573ad3a4b0 100644 --- a/src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs +++ b/src/test/compile-fail/borrowck-call-is-borrow-issue-12224.rs @@ -18,14 +18,14 @@ struct Test<'a> { } fn call(f: |Fn|) { - f(|| { + f(ref || { //~^ ERROR: closure requires unique access to `f` but it is already borrowed - f(|| {}) + f(ref || {}) }); } fn test1() { - call(|a| { + call(ref |a| { a(); }); } @@ -47,16 +47,16 @@ fn test5(f: &mut Test) { } fn test6() { - let f = || {}; - (|| { + let f = ref || {}; + (ref || { f(); })(); } fn test7() { fn foo(_: |g: |int|, b: int|) {} - let f = |g: |int|, b: int| {}; - f(|a| { //~ ERROR: cannot borrow `f` as immutable because previous closure + let f = ref |g: |int|, b: int| {}; + f(ref |a| { //~ ERROR: cannot borrow `f` as immutable because previous closure foo(f); //~ ERROR: cannot move out of captured outer variable }, 3); } diff --git a/src/test/compile-fail/borrowck-closures-mut-and-imm.rs b/src/test/compile-fail/borrowck-closures-mut-and-imm.rs index 886026e45d90f..1827f097d130b 100644 --- a/src/test/compile-fail/borrowck-closures-mut-and-imm.rs +++ b/src/test/compile-fail/borrowck-closures-mut-and-imm.rs @@ -22,37 +22,37 @@ fn set(x: &mut int) { fn a() { let mut x = 3i; - let c1 = || x = 4; - let c2 = || x * 5; //~ ERROR cannot borrow `x` + let c1 = ref || x = 4; + let c2 = ref || x * 5; //~ ERROR cannot borrow `x` } fn b() { let mut x = 3i; - let c1 = || set(&mut x); - let c2 = || get(&x); //~ ERROR cannot borrow `x` + let c1 = ref || set(&mut x); + let c2 = ref || get(&x); //~ ERROR cannot borrow `x` } fn c() { let mut x = 3i; - let c1 = || set(&mut x); - let c2 = || x * 5; //~ ERROR cannot borrow `x` + let c1 = ref || set(&mut x); + let c2 = ref || x * 5; //~ ERROR cannot borrow `x` } fn d() { let mut x = 3i; - let c2 = || x * 5; + let c2 = ref || x * 5; x = 5; //~ ERROR cannot assign } fn e() { let mut x = 3i; - let c1 = || get(&x); + let c1 = ref || get(&x); x = 5; //~ ERROR cannot assign } fn f() { let mut x = box 3i; - let c1 = || get(&*x); + let c1 = ref || get(&*x); *x = 5; //~ ERROR cannot assign } @@ -62,7 +62,7 @@ fn g() { } let mut x = box Foo { f: box 3 }; - let c1 = || get(&*x.f); + let c1 = ref || get(&*x.f); *x.f = 5; //~ ERROR cannot assign to `*x.f` } @@ -72,8 +72,8 @@ fn h() { } let mut x = box Foo { f: box 3 }; - let c1 = || get(&*x.f); - let c2 = || *x.f = 5; //~ ERROR cannot borrow `x` as mutable + let c1 = ref || get(&*x.f); + let c2 = ref || *x.f = 5; //~ ERROR cannot borrow `x` as mutable } fn main() { diff --git a/src/test/compile-fail/borrowck-closures-mut-of-imm.rs b/src/test/compile-fail/borrowck-closures-mut-of-imm.rs index cdfb569762de3..e99498a0c1e66 100644 --- a/src/test/compile-fail/borrowck-closures-mut-of-imm.rs +++ b/src/test/compile-fail/borrowck-closures-mut-of-imm.rs @@ -20,9 +20,9 @@ fn set(x: &mut int) { } fn a(x: &int) { - let c1 = || set(&mut *x); + let c1 = ref || set(&mut *x); //~^ ERROR cannot borrow - let c2 = || set(&mut *x); + let c2 = ref || set(&mut *x); //~^ ERROR closure requires unique access to `x` //~^^ ERROR cannot borrow } diff --git a/src/test/compile-fail/borrowck-closures-two-mut.rs b/src/test/compile-fail/borrowck-closures-two-mut.rs index 6d382854d49f2..a3733bccdf0d4 100644 --- a/src/test/compile-fail/borrowck-closures-two-mut.rs +++ b/src/test/compile-fail/borrowck-closures-two-mut.rs @@ -15,8 +15,8 @@ fn a() { let mut x = 3i; - let c1 = || x = 4; - let c2 = || x = 5; //~ ERROR cannot borrow `x` as mutable more than once + let c1 = ref || x = 4; + let c2 = ref || x = 5; //~ ERROR cannot borrow `x` as mutable more than once } fn set(x: &mut int) { @@ -25,20 +25,20 @@ fn set(x: &mut int) { fn b() { let mut x = 3i; - let c1 = || set(&mut x); - let c2 = || set(&mut x); //~ ERROR cannot borrow `x` as mutable more than once + let c1 = ref || set(&mut x); + let c2 = ref || set(&mut x); //~ ERROR cannot borrow `x` as mutable more than once } fn c() { let mut x = 3i; - let c1 = || x = 5; - let c2 = || set(&mut x); //~ ERROR cannot borrow `x` as mutable more than once + let c1 = ref || x = 5; + let c2 = ref || set(&mut x); //~ ERROR cannot borrow `x` as mutable more than once } fn d() { let mut x = 3i; - let c1 = || x = 5; - let c2 = || { let _y = || set(&mut x); }; // (nested closure) + let c1 = ref || x = 5; + let c2 = ref || { let _y = ref || set(&mut x); }; // (nested closure) //~^ ERROR cannot borrow `x` as mutable more than once } @@ -48,8 +48,8 @@ fn g() { } let mut x = box Foo { f: box 3 }; - let c1 = || set(&mut *x.f); - let c2 = || set(&mut *x.f); + let c1 = ref || set(&mut *x.f); + let c2 = ref || set(&mut *x.f); //~^ ERROR cannot borrow `x` as mutable more than once } diff --git a/src/test/compile-fail/borrowck-closures-unique.rs b/src/test/compile-fail/borrowck-closures-unique.rs index 80d942e58d15c..05ccd046f8bf3 100644 --- a/src/test/compile-fail/borrowck-closures-unique.rs +++ b/src/test/compile-fail/borrowck-closures-unique.rs @@ -23,27 +23,27 @@ fn set(x: &mut int) -> int { } fn a(x: &mut int) { - let c1 = || get(x); - let c2 = || get(x); + let c1 = ref || get(x); + let c2 = ref || get(x); } fn b(x: &mut int) { - let c1 = || get(x); - let c2 = || set(x); //~ ERROR closure requires unique access to `x` + let c1 = ref || get(x); + let c2 = ref || set(x); //~ ERROR closure requires unique access to `x` } fn c(x: &mut int) { - let c1 = || get(x); - let c2 = || { get(x); set(x); }; //~ ERROR closure requires unique access to `x` + let c1 = ref || get(x); + let c2 = ref || { get(x); set(x); }; //~ ERROR closure requires unique access to `x` } fn d(x: &mut int) { - let c1 = || set(x); - let c2 = || set(x); //~ ERROR closure requires unique access to `x` + let c1 = ref || set(x); + let c2 = ref || set(x); //~ ERROR closure requires unique access to `x` } fn e(x: &mut int) { - let c1: || = || x = fail!(); //~ ERROR closure cannot assign to immutable argument `x` + let c1: || = ref || x = fail!(); //~ ERROR closure cannot assign to immutable argument `x` } fn main() { diff --git a/src/test/compile-fail/borrowck-closures-use-after-free.rs b/src/test/compile-fail/borrowck-closures-use-after-free.rs index 735d9ece9b1a5..9ffaad0ab0d52 100644 --- a/src/test/compile-fail/borrowck-closures-use-after-free.rs +++ b/src/test/compile-fail/borrowck-closures-use-after-free.rs @@ -25,7 +25,7 @@ impl Drop for Foo { fn main() { let mut ptr = box Foo { x: 0 }; - let test = |foo: &Foo| { + let test = ref |foo: &Foo| { ptr = box Foo { x: ptr.x + 1 }; }; test(&*ptr); //~ ERROR cannot borrow `*ptr` diff --git a/src/test/compile-fail/borrowck-insert-during-each.rs b/src/test/compile-fail/borrowck-insert-during-each.rs index a84a025d8a8ee..f587c3148e270 100644 --- a/src/test/compile-fail/borrowck-insert-during-each.rs +++ b/src/test/compile-fail/borrowck-insert-during-each.rs @@ -25,7 +25,7 @@ impl Foo { fn bar(f: &mut Foo) { f.foo( - |a| { //~ ERROR closure requires unique access to `f` + ref |a| { //~ ERROR closure requires unique access to `f` f.n.insert(*a); }) } diff --git a/src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs b/src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs index bfa890ada9f19..cc57a81ebcd6f 100644 --- a/src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs +++ b/src/test/compile-fail/borrowck-loan-blocks-mut-uniq.rs @@ -15,7 +15,7 @@ fn borrow(v: &int, f: |x: &int|) { fn box_imm() { let mut v = box 3; borrow(&*v, - |w| { //~ ERROR cannot borrow `v` as mutable + ref |w| { //~ ERROR cannot borrow `v` as mutable v = box 4; assert_eq!(*v, 3); assert_eq!(*w, 4); diff --git a/src/test/compile-fail/borrowck-loan-rcvr.rs b/src/test/compile-fail/borrowck-loan-rcvr.rs index d678fd48f21d2..22cb584e3c4e3 100644 --- a/src/test/compile-fail/borrowck-loan-rcvr.rs +++ b/src/test/compile-fail/borrowck-loan-rcvr.rs @@ -31,7 +31,7 @@ fn a() { p.impurem(); // But in this case we do not honor the loan: - p.blockm(|| { //~ ERROR cannot borrow `p` as mutable + p.blockm(ref || { //~ ERROR cannot borrow `p` as mutable p.x = 10; }) } diff --git a/src/test/compile-fail/borrowck-loan-vec-content.rs b/src/test/compile-fail/borrowck-loan-vec-content.rs index 393b528869a94..dc436526e7c53 100644 --- a/src/test/compile-fail/borrowck-loan-vec-content.rs +++ b/src/test/compile-fail/borrowck-loan-vec-content.rs @@ -18,14 +18,14 @@ fn takes_imm_elt(_v: &int, f: ||) { fn has_mut_vec_and_does_not_try_to_change_it() { let mut v = vec!(1, 2, 3); - takes_imm_elt(v.get(0), || {}) + takes_imm_elt(v.get(0), ref || {}) } fn has_mut_vec_but_tries_to_change_it() { let mut v = vec!(1, 2, 3); takes_imm_elt( v.get(0), - || { //~ ERROR cannot borrow `v` as mutable + ref || { //~ ERROR cannot borrow `v` as mutable *v.get_mut(1) = 4; }) } diff --git a/src/test/compile-fail/borrowck-preserve-box-in-field.rs b/src/test/compile-fail/borrowck-preserve-box-in-field.rs index ad1ac3cc15ee3..104440fa7d2d9 100644 --- a/src/test/compile-fail/borrowck-preserve-box-in-field.rs +++ b/src/test/compile-fail/borrowck-preserve-box-in-field.rs @@ -24,7 +24,7 @@ struct F { f: Box } pub fn main() { let mut x = box(GC) F {f: box 3}; - borrow(&*x.f, |b_x| { + borrow(&*x.f, ref |b_x| { //~^ ERROR cannot borrow `x` as mutable because `*x.f` is also borrowed as immutable assert_eq!(*b_x, 3); assert_eq!(&(*x.f) as *const int, &(*b_x) as *const int); diff --git a/src/test/compile-fail/borrowck-preserve-box-in-uniq.rs b/src/test/compile-fail/borrowck-preserve-box-in-uniq.rs index ec52f0588363c..eea088e3b834d 100644 --- a/src/test/compile-fail/borrowck-preserve-box-in-uniq.rs +++ b/src/test/compile-fail/borrowck-preserve-box-in-uniq.rs @@ -24,7 +24,7 @@ struct F { f: Box } pub fn main() { let mut x = box box(GC) F{f: box 3}; - borrow(&*x.f, |b_x| { + borrow(&*x.f, ref |b_x| { //~^ ERROR cannot borrow `x` as mutable because `*x.f` is also borrowed as immutable assert_eq!(*b_x, 3); assert_eq!(&(*x.f) as *const int, &(*b_x) as *const int); diff --git a/src/test/compile-fail/borrowck-preserve-box.rs b/src/test/compile-fail/borrowck-preserve-box.rs index 5aff482a32320..8a4ccd85e5493 100644 --- a/src/test/compile-fail/borrowck-preserve-box.rs +++ b/src/test/compile-fail/borrowck-preserve-box.rs @@ -22,7 +22,7 @@ fn borrow(x: &int, f: |x: &int|) { pub fn main() { let mut x = box(GC) 3; - borrow(&*x, |b_x| { + borrow(&*x, ref |b_x| { //~^ ERROR cannot borrow `x` as mutable because `*x` is also borrowed as immutable assert_eq!(*b_x, 3); assert_eq!(&(*x) as *const int, &(*b_x) as *const int); diff --git a/src/test/compile-fail/borrowck-preserve-expl-deref.rs b/src/test/compile-fail/borrowck-preserve-expl-deref.rs index 2ad042c69c3bb..2d05bcb395b87 100644 --- a/src/test/compile-fail/borrowck-preserve-expl-deref.rs +++ b/src/test/compile-fail/borrowck-preserve-expl-deref.rs @@ -24,7 +24,7 @@ struct F { f: Box } pub fn main() { let mut x = box(GC) F {f: box 3}; - borrow(&*(*x).f, |b_x| { + borrow(&*(*x).f, ref |b_x| { //~^ ERROR cannot borrow `x` as mutable because `*x.f` is also borrowed as immutable assert_eq!(*b_x, 3); assert_eq!(&(*x.f) as *const int, &(*b_x) as *const int); diff --git a/src/test/compile-fail/issue-11192.rs b/src/test/compile-fail/issue-11192.rs index 18a00d15eafe3..ab28ff031d78d 100644 --- a/src/test/compile-fail/issue-11192.rs +++ b/src/test/compile-fail/issue-11192.rs @@ -20,7 +20,7 @@ impl Drop for Foo { fn main() { let mut ptr = box Foo { x: 0 }; - let test = |foo: &Foo| { + let test = ref |foo: &Foo| { println!("access {}", foo.x); ptr = box Foo { x: ptr.x + 1 }; println!("access {}", foo.x); diff --git a/src/test/compile-fail/issue-11873.rs b/src/test/compile-fail/issue-11873.rs index e1acab4008a9b..90dc062e93ff5 100644 --- a/src/test/compile-fail/issue-11873.rs +++ b/src/test/compile-fail/issue-11873.rs @@ -10,7 +10,7 @@ fn main() { let mut v = vec!(1i); - let f = || v.push(2i); + let f = ref || v.push(2i); let _w = v; //~ ERROR: cannot move out of `v` f(); diff --git a/src/test/compile-fail/issue-16149.rs b/src/test/compile-fail/issue-16149.rs index c52c53ec2e9ca..0eb79ab81fbf9 100644 --- a/src/test/compile-fail/issue-16149.rs +++ b/src/test/compile-fail/issue-16149.rs @@ -8,6 +8,10 @@ // option. This file may not be copied, modified, or distributed // except according to those terms. +// ignore-test +// +// ICE's after emitting the right error. + extern { static externalValue: int; } diff --git a/src/test/compile-fail/issue-6801.rs b/src/test/compile-fail/issue-6801.rs index 5925f6869391a..995d881186e8d 100644 --- a/src/test/compile-fail/issue-6801.rs +++ b/src/test/compile-fail/issue-6801.rs @@ -23,7 +23,7 @@ fn invoke(f: || -> uint) { fn main() { let x : Box = box 9; - let sq : || -> uint = || { *x * *x }; + let sq : || -> uint = ref || { *x * *x }; twice(x); //~ ERROR: cannot move out of invoke(sq); diff --git a/src/test/compile-fail/lint-unused-mut-variables.rs b/src/test/compile-fail/lint-unused-mut-variables.rs index c5281bf678185..9a015ca7ef7fc 100644 --- a/src/test/compile-fail/lint-unused-mut-variables.rs +++ b/src/test/compile-fail/lint-unused-mut-variables.rs @@ -35,7 +35,7 @@ fn main() { _ => {} } - let x = |mut y: int| 10i; //~ ERROR: variable does not need to be mutable + let x = ref |mut y: int| 10i; //~ ERROR: variable does not need to be mutable fn what(mut foo: int) {} //~ ERROR: variable does not need to be mutable // positive cases @@ -44,7 +44,7 @@ fn main() { let mut a = Vec::new(); a.push(3i); let mut a = Vec::new(); - callback(|| { + callback(ref || { a.push(3i); }); let (mut a, b) = (1i, 2i); @@ -65,7 +65,7 @@ fn main() { _ => {} } - let x = |mut y: int| y = 32i; + let x = ref |mut y: int| y = 32i; fn nothing(mut foo: int) { foo = 37i; } // leading underscore should avoid the warning, just like the diff --git a/src/test/compile-fail/regions-creating-enums.rs b/src/test/compile-fail/regions-creating-enums.rs index ed3ce1fd0f077..6b1c2fdc8497a 100644 --- a/src/test/compile-fail/regions-creating-enums.rs +++ b/src/test/compile-fail/regions-creating-enums.rs @@ -33,8 +33,8 @@ fn map_nums<'a,'b>(x: &ast, f: |uint| -> uint) -> &'a ast<'b> { return &num(f(x)); //~ ERROR borrowed value does not live long enough } add(x, y) => { - let m_x = map_nums(x, |z| f(z)); - let m_y = map_nums(y, |z| f(z)); + let m_x = map_nums(x, ref |z| f(z)); + let m_y = map_nums(y, ref |z| f(z)); return &add(m_x, m_y); //~ ERROR borrowed value does not live long enough } } diff --git a/src/test/compile-fail/regions-nested-fns-2.rs b/src/test/compile-fail/regions-nested-fns-2.rs index 60eae9ce80af1..1f866db42cdbb 100644 --- a/src/test/compile-fail/regions-nested-fns-2.rs +++ b/src/test/compile-fail/regions-nested-fns-2.rs @@ -13,7 +13,7 @@ fn ignore(_f: <'z>|&'z int| -> &'z int) {} fn nested() { let y = 3; ignore( - |z| { //~ ERROR `y` does not live long enough + ref |z| { //~ ERROR `y` does not live long enough if false { &y } else { z } }); } diff --git a/src/test/run-pass/argument-passing.rs b/src/test/run-pass/argument-passing.rs index 75e197923c635..7f765ed4a6a1d 100644 --- a/src/test/run-pass/argument-passing.rs +++ b/src/test/run-pass/argument-passing.rs @@ -29,6 +29,6 @@ pub fn main() { assert_eq!(f1(&mut a, &mut b, c), 6); assert_eq!(a.x, 0); assert_eq!(b, 10); - assert_eq!(f2(a.x, |_| a.x = 50), 0); + assert_eq!(f2(a.x, ref |_| a.x = 50), 0); assert_eq!(a.x, 50); } diff --git a/src/test/run-pass/assignability-trait.rs b/src/test/run-pass/assignability-trait.rs index 1ffee6aad7603..b1807476ab594 100644 --- a/src/test/run-pass/assignability-trait.rs +++ b/src/test/run-pass/assignability-trait.rs @@ -31,7 +31,7 @@ impl iterable for Vec { fn length>(x: T) -> uint { let mut len = 0; - x.iterate(|_y| { + x.iterate(ref |_y| { len += 1; true }); @@ -41,7 +41,7 @@ fn length>(x: T) -> uint { pub fn main() { let x: Vec = vec!(0,1,2,3); // Call a method - x.iterate(|y| { assert!(*x.get(*y as uint) == *y); true }); + x.iterate(ref |y| { assert!(*x.get(*y as uint) == *y); true }); // Call a parameterized function assert_eq!(length(x.clone()), x.len()); // Call a parameterized function, with type arguments that require @@ -51,7 +51,7 @@ pub fn main() { // Now try it with a type that *needs* to be borrowed let z = [0,1,2,3]; // Call a method - z.iterate(|y| { assert!(z[*y as uint] == *y); true }); + z.iterate(ref |y| { assert!(z[*y as uint] == *y); true }); // Call a parameterized function assert_eq!(length::(z), z.len()); } diff --git a/src/test/run-pass/block-iter-1.rs b/src/test/run-pass/block-iter-1.rs index dee013a914032..ee202b80c4d7a 100644 --- a/src/test/run-pass/block-iter-1.rs +++ b/src/test/run-pass/block-iter-1.rs @@ -15,7 +15,7 @@ fn iter_vec(v: Vec , f: |&T|) { for x in v.iter() { f(x); } } pub fn main() { let v = vec!(1i, 2, 3, 4, 5, 6, 7); let mut odds = 0i; - iter_vec(v, |i| { + iter_vec(v, ref |i| { if *i % 2 == 1 { odds += 1; } diff --git a/src/test/run-pass/block-iter-2.rs b/src/test/run-pass/block-iter-2.rs index 82b162ba4bc68..30e5906aa7ffd 100644 --- a/src/test/run-pass/block-iter-2.rs +++ b/src/test/run-pass/block-iter-2.rs @@ -15,8 +15,8 @@ fn iter_vec(v: Vec , f: |&T|) { for x in v.iter() { f(x); } } pub fn main() { let v = vec!(1i, 2, 3, 4, 5); let mut sum = 0; - iter_vec(v.clone(), |i| { - iter_vec(v.clone(), |j| { + iter_vec(v.clone(), ref |i| { + iter_vec(v.clone(), ref |j| { sum += *i * *j; }); }); diff --git a/src/test/run-pass/foreach-nested.rs b/src/test/run-pass/foreach-nested.rs index 357d1201a4cbb..5b12a37677935 100644 --- a/src/test/run-pass/foreach-nested.rs +++ b/src/test/run-pass/foreach-nested.rs @@ -14,8 +14,8 @@ fn two(it: |int|) { it(0); it(1); } pub fn main() { let mut a: Vec = vec!(-1, -1, -1, -1); let mut p: int = 0; - two(|i| { - two(|j| { *a.get_mut(p as uint) = 10 * i + j; p += 1; }) + two(ref |i| { + two(ref |j| { *a.get_mut(p as uint) = 10 * i + j; p += 1; }) }); assert_eq!(*a.get(0), 0); assert_eq!(*a.get(1), 1); diff --git a/src/test/run-pass/foreach-put-structured.rs b/src/test/run-pass/foreach-put-structured.rs index 7a728e18a2901..af2745cd38008 100644 --- a/src/test/run-pass/foreach-put-structured.rs +++ b/src/test/run-pass/foreach-put-structured.rs @@ -19,7 +19,7 @@ fn pairs(it: |(int, int)|) { pub fn main() { let mut i: int = 10; let mut j: int = 0; - pairs(|p| { + pairs(ref |p| { let (_0, _1) = p; println!("{}", _0); println!("{}", _1); diff --git a/src/test/run-pass/foreach-simple-outer-slot.rs b/src/test/run-pass/foreach-simple-outer-slot.rs index bb726773bb5db..c3ba5641c64e2 100644 --- a/src/test/run-pass/foreach-simple-outer-slot.rs +++ b/src/test/run-pass/foreach-simple-outer-slot.rs @@ -13,7 +13,11 @@ pub fn main() { let mut sum: int = 0; - first_ten(|i| { println!("main"); println!("{}", i); sum = sum + i; }); + first_ten(ref |i| { + println!("main"); + println!("{}", i); + sum = sum + i; + }); println!("sum"); println!("{}", sum); assert_eq!(sum, 45); diff --git a/src/test/run-pass/ifmt.rs b/src/test/run-pass/ifmt.rs index 2a3bce18eba5e..11d2c021ed8fa 100644 --- a/src/test/run-pass/ifmt.rs +++ b/src/test/run-pass/ifmt.rs @@ -187,16 +187,16 @@ fn test_format_args() { let mut buf = MemWriter::new(); { let w = &mut buf as &mut io::Writer; - format_args!(|args| { write!(w, "{}", args); }, "{}", 1i); - format_args!(|args| { write!(w, "{}", args); }, "test"); - format_args!(|args| { write!(w, "{}", args); }, "{test}", test=3i); + format_args!(ref |args| { write!(w, "{}", args); }, "{}", 1i); + format_args!(ref |args| { write!(w, "{}", args); }, "test"); + format_args!(ref |args| { write!(w, "{}", args); }, "{test}", test=3i); } let s = str::from_utf8(buf.unwrap().as_slice()).unwrap().to_string(); t!(s, "1test3"); let s = format_args!(fmt::format, "hello {}", "world"); t!(s, "hello world"); - let s = format_args!(|args| { + let s = format_args!(ref |args| { format!("{}: {}", "args were", args) }, "hello {}", "world"); t!(s, "args were: hello world"); diff --git a/src/test/run-pass/lambda-infer-unresolved.rs b/src/test/run-pass/lambda-infer-unresolved.rs index 190d25015840c..de405bfce3415 100644 --- a/src/test/run-pass/lambda-infer-unresolved.rs +++ b/src/test/run-pass/lambda-infer-unresolved.rs @@ -16,7 +16,7 @@ struct Refs { refs: Vec , n: int } pub fn main() { let mut e = Refs{refs: vec!(), n: 0}; - let _f: || = || println!("{}", e.n); + let _f: || = ref || println!("{}", e.n); let x: &[int] = e.refs.as_slice(); assert_eq!(x.len(), 0); } diff --git a/src/test/run-pass/regions-copy-closure.rs b/src/test/run-pass/regions-copy-closure.rs index b4523ce41ce75..8565921c0adba 100644 --- a/src/test/run-pass/regions-copy-closure.rs +++ b/src/test/run-pass/regions-copy-closure.rs @@ -20,7 +20,7 @@ pub fn main() { let mut i = 3i; assert_eq!(i, 3); { - let cl = || i += 1; + let cl = ref || i += 1; let cl_box = box_it(cl); (cl_box.cl)(); } diff --git a/src/test/run-pass/static-impl.rs b/src/test/run-pass/static-impl.rs index d0dacc2ff7a9d..764133b898532 100644 --- a/src/test/run-pass/static-impl.rs +++ b/src/test/run-pass/static-impl.rs @@ -62,11 +62,11 @@ pub fn main() { assert_eq!(("hi".to_string()).plus(), 200); assert_eq!((vec!(1i)).length_().str(), "1".to_string()); - let vect = vec!(3i, 4).map_(|a| *a + 4); + let vect = vec!(3i, 4).map_(ref |a| *a + 4); assert_eq!(*vect.get(0), 7); - let vect = (vec!(3i, 4)).map_::(|a| *a as uint + 4u); + let vect = (vec!(3i, 4)).map_::(ref |a| *a as uint + 4u); assert_eq!(*vect.get(0), 7u); let mut x = 0u; - 10u.multi(|_n| x += 2u ); + 10u.multi(ref |_n| x += 2u ); assert_eq!(x, 20u); }