Skip to content

Commit 755c54d

Browse files
committed
---
yaml --- r: 7091 b: refs/heads/master c: bf038b9 h: refs/heads/master i: 7089: 31898ae 7087: b6d85b1 v: v3
1 parent fae5f3b commit 755c54d

File tree

5 files changed

+27
-25
lines changed

5 files changed

+27
-25
lines changed

[refs]

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
11
---
2-
refs/heads/master: 373dbe7741034d22e1f7875e06c72825084f6944
2+
refs/heads/master: bf038b9b90e45f351ffb1835fe5513f611046140

trunk/src/fuzzer/ast_match.rs

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std;
22
import vec;
33

4-
fn vec_equal<T>(v: [T], u: [T], element_equality_test: fn(T, T) -> bool) ->
4+
fn vec_equal<T>(v: [T], u: [T], element_equality_test: fn@(&&T, &&T) -> bool) ->
55
bool {
66
let Lv = vec::len(v);
77
if Lv != vec::len(u) { ret false; }
@@ -13,15 +13,17 @@ fn vec_equal<T>(v: [T], u: [T], element_equality_test: fn(T, T) -> bool) ->
1313
ret true;
1414
}
1515

16-
fn builtin_equal<T>(a: T, b: T) -> bool { ret a == b; }
16+
pure fn builtin_equal<T>(&&a: T, &&b: T) -> bool { ret a == b; }
17+
pure fn builtin_equal_int(&&a: int, &&b: int) -> bool { ret a == b; }
1718

1819
fn main() {
1920
assert (builtin_equal(5, 5));
2021
assert (!builtin_equal(5, 4));
21-
assert (!vec_equal([5, 5], [5], builtin_equal));
22-
assert (!vec_equal([5, 5], [5, 4], builtin_equal));
23-
assert (!vec_equal([5, 5], [4, 5], builtin_equal));
24-
assert (vec_equal([5, 5], [5, 5], builtin_equal));
22+
assert (!vec_equal([5, 5], [5], bind builtin_equal(_, _)));
23+
assert (!vec_equal([5, 5], [5], builtin_equal_int));
24+
assert (!vec_equal([5, 5], [5, 4], builtin_equal_int));
25+
assert (!vec_equal([5, 5], [4, 5], builtin_equal_int));
26+
assert (vec_equal([5, 5], [5, 5], builtin_equal_int));
2527

2628
#error("Pass");
2729
}

trunk/src/fuzzer/cycles.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import option;
77
fn under(r : rand::rng, n : uint) -> uint { assert n != 0u; r.next() as uint % n }
88

99
// random choice from a vec
10-
fn choice<T>(r : rand::rng, v : [T]) -> T { assert vec::len(v) != 0u; v[under(r, vec::len(v))] }
10+
fn choice<T: copy>(r : rand::rng, v : [T]) -> T { assert vec::len(v) != 0u; v[under(r, vec::len(v))] }
1111

1212
// 1 in n chance of being true
1313
fn unlikely(r : rand::rng, n : uint) -> bool { under(r, n) == 0u }
@@ -20,7 +20,7 @@ tag maybe_pointy {
2020
type pointy = {
2121
mutable x : maybe_pointy,
2222
mutable y : maybe_pointy,
23-
mutable z : fn()->()
23+
mutable z : fn@()->()
2424
};
2525

2626
fn allunder(n: uint, it: block(uint)) {
@@ -36,8 +36,8 @@ fn test_cycles(r : rand::rng)
3636
const max : uint = 10u;
3737

3838
let v : [mutable @pointy] = [mutable];
39-
allunder(max) {|i|
40-
v += [mutable @{ mutable x : no_pointy, mutable y : no_pointy, mutable z: nop }];
39+
allunder(max) {|_i|
40+
v += [mutable @{ mutable x : no_pointy, mutable y : no_pointy, mutable z: bind nop() }];
4141
}
4242

4343
allunder(max) {|i|
@@ -48,7 +48,7 @@ fn test_cycles(r : rand::rng)
4848

4949
// Drop refs one at a time
5050
allunder(max) {|i|
51-
v[i] = @{ mutable x : no_pointy, mutable y : no_pointy, mutable z: nop };
51+
v[i] = @{ mutable x : no_pointy, mutable y : no_pointy, mutable z: bind nop() };
5252
}
5353
}
5454

trunk/src/fuzzer/ivec_fuzz.rs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,22 +22,22 @@ import vec::slice;
2222
import vec::len;
2323
import int;
2424

25-
fn vec_omit<T>(v: [T], i: uint) -> [T] {
25+
fn vec_omit<T: copy>(v: [T], i: uint) -> [T] {
2626
slice(v, 0u, i) + slice(v, i + 1u, len(v))
2727
}
28-
fn vec_dup<T>(v: [T], i: uint) -> [T] {
28+
fn vec_dup<T: copy>(v: [T], i: uint) -> [T] {
2929
slice(v, 0u, i) + [v[i]] + slice(v, i, len(v))
3030
}
31-
fn vec_swadj<T>(v: [T], i: uint) -> [T] {
31+
fn vec_swadj<T: copy>(v: [T], i: uint) -> [T] {
3232
slice(v, 0u, i) + [v[i + 1u], v[i]] + slice(v, i + 2u, len(v))
3333
}
34-
fn vec_prefix<T>(v: [T], i: uint) -> [T] { slice(v, 0u, i) }
35-
fn vec_suffix<T>(v: [T], i: uint) -> [T] { slice(v, i, len(v)) }
34+
fn vec_prefix<T: copy>(v: [T], i: uint) -> [T] { slice(v, 0u, i) }
35+
fn vec_suffix<T: copy>(v: [T], i: uint) -> [T] { slice(v, i, len(v)) }
3636

37-
fn vec_poke<T>(v: [T], i: uint, x: T) -> [T] {
37+
fn vec_poke<T: copy>(v: [T], i: uint, x: T) -> [T] {
3838
slice(v, 0u, i) + [x] + slice(v, i + 1u, len(v))
3939
}
40-
fn vec_insert<T>(v: [T], i: uint, x: T) -> [T] {
40+
fn vec_insert<T: copy>(v: [T], i: uint, x: T) -> [T] {
4141
slice(v, 0u, i) + [x] + slice(v, i, len(v))
4242
}
4343

@@ -48,7 +48,7 @@ fn ix(skip_low: uint, skip_high: uint, length: uint, it: block(uint)) {
4848
}
4949

5050
// Returns a bunch of modified versions of v, some of which introduce new elements (borrowed from xs).
51-
fn vec_edits<T>(v: [T], xs: [T]) -> [[T]] {
51+
fn vec_edits<T: copy>(v: [T], xs: [T]) -> [[T]] {
5252
let edits: [[T]] = [];
5353
let Lv: uint = len(v);
5454

trunk/src/fuzzer/rand_util.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import vec;
66
fn under(r : rand::rng, n : uint) -> uint { assert n != 0u; r.next() as uint % n }
77

88
// random choice from a vec
9-
fn choice<T>(r : rand::rng, v : [T]) -> T { assert vec::len(v) != 0u; v[under(r, vec::len(v))] }
9+
fn choice<T: copy>(r : rand::rng, v : [T]) -> T { assert vec::len(v) != 0u; v[under(r, vec::len(v))] }
1010

1111
// 1 in n chance of being true
1212
fn unlikely(r : rand::rng, n : uint) -> bool { under(r, n) == 0u }
@@ -22,7 +22,7 @@ fn shuffle<T>(r : rand::rng, &v : [mutable T]) {
2222
}
2323

2424
// create a shuffled copy of a vec
25-
fn shuffled<T>(r : rand::rng, v : [T]) -> [T] {
25+
fn shuffled<T: copy>(r : rand::rng, v : [T]) -> [T] {
2626
let w = vec::to_mut(v);
2727
shuffle(r, w);
2828
vec::from_mut(w) // Shouldn't this happen automatically?
@@ -35,7 +35,7 @@ fn shuffled<T>(r : rand::rng, v : [T]) -> [T] {
3535
// * weighted_choice is O(number of choices) time
3636
// * weighted_vec is O(total weight) space
3737
type weighted<T> = { weight: uint, item: T };
38-
fn weighted_choice<T>(r : rand::rng, v : [weighted<T>]) -> T {
38+
fn weighted_choice<T: copy>(r : rand::rng, v : [weighted<T>]) -> T {
3939
assert vec::len(v) != 0u;
4040
let total = 0u;
4141
for {weight: weight, item: _} in v {
@@ -53,7 +53,7 @@ fn weighted_choice<T>(r : rand::rng, v : [weighted<T>]) -> T {
5353
std::util::unreachable();
5454
}
5555

56-
fn weighted_vec<T>(v : [weighted<T>]) -> [T] {
56+
fn weighted_vec<T: copy>(v : [weighted<T>]) -> [T] {
5757
let r = [];
5858
for {weight: weight, item: item} in v {
5959
let i = 0u;
@@ -87,7 +87,7 @@ fn main()
8787

8888
while i < 1000u {
8989
log(error, "Immed: " + weighted_choice(r, v));
90-
log(error, "Fast: " + choice(r, w));
90+
log(error, "Fast: " + choice(r, w));
9191
i += 1u;
9292
}
9393
}

0 commit comments

Comments
 (0)