Skip to content

Commit 44f9746

Browse files
committed
---
yaml --- r: 5496 b: refs/heads/master c: 18b01d5 h: refs/heads/master v: v3
1 parent b266ef4 commit 44f9746

24 files changed

+270
-1
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: 2082f67765947d1c84efdf0b374e0b80f535f109
2+
refs/heads/master: 18b01d5cfeb5e1d6489e2397b22c5a9aa3ff7c90
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// error-pattern:fail
2+
3+
fn failfn() {
4+
fail;
5+
}
6+
7+
fn main() {
8+
@0;
9+
failfn();
10+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// xfail-test
2+
fn main() {
3+
let x = ~{mutable a: ~10, b: ~20};
4+
alt x {
5+
~{a, b} { assert *a == 10; (*x).a = ~30; assert *a == 10; }
6+
}
7+
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// xfail-test
2+
3+
4+
// -*- rust -*-
5+
type compare<T> = fn(~T, ~T) -> bool;
6+
7+
fn test_generic<T>(expected: ~T, eq: compare<T>) {
8+
let actual: ~T = alt true { true { expected } };
9+
assert (eq(expected, actual));
10+
}
11+
12+
fn test_box() {
13+
fn compare_box(b1: ~bool, b2: ~bool) -> bool { ret *b1 == *b2; }
14+
let eq = bind compare_box(_, _);
15+
test_generic::<bool>(~true, eq);
16+
}
17+
18+
fn main() { test_box(); }
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
3+
4+
// -*- rust -*-
5+
type compare<T> = fn(T, T) -> bool;
6+
7+
fn test_generic<T>(expected: T, eq: compare<T>) {
8+
let actual: T = alt true { true { expected } };
9+
assert (eq(expected, actual));
10+
}
11+
12+
fn test_vec() {
13+
fn compare_box(v1: ~int, v2: ~int) -> bool { ret v1 == v2; }
14+
let eq = bind compare_box(_, _);
15+
test_generic::<~int>(~1, eq);
16+
}
17+
18+
fn main() { test_vec(); }
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
2+
3+
4+
// -*- rust -*-
5+
6+
// Tests for alt as expressions resulting in boxed types
7+
fn test_box() { let res = alt true { true { ~100 } }; assert (*res == 100); }
8+
9+
fn main() { test_box(); }
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
// xfail-test
2+
3+
4+
// -*- rust -*-
5+
type compare<T> = fn(~T, ~T) -> bool;
6+
7+
fn test_generic<T>(expected: ~T, eq: compare<T>) {
8+
let actual: ~T = { expected };
9+
assert (eq(expected, actual));
10+
}
11+
12+
fn test_box() {
13+
fn compare_box(b1: ~bool, b2: ~bool) -> bool {
14+
log *b1;
15+
log *b2;
16+
ret *b1 == *b2;
17+
}
18+
let eq = bind compare_box(_, _);
19+
test_generic::<bool>(~true, eq);
20+
}
21+
22+
fn main() { test_box(); }
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
3+
4+
// -*- rust -*-
5+
type compare<T> = fn(T, T) -> bool;
6+
7+
fn test_generic<T>(expected: T, eq: compare<T>) {
8+
let actual: T = { expected };
9+
assert (eq(expected, actual));
10+
}
11+
12+
fn test_vec() {
13+
fn compare_vec(v1: ~int, v2: ~int) -> bool { ret v1 == v2; }
14+
let eq = bind compare_vec(_, _);
15+
test_generic::<~int>(~1, eq);
16+
}
17+
18+
fn main() { test_vec(); }
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
3+
4+
// -*- rust -*-
5+
fn main() { let x = { ~100 }; assert (*x == 100); }
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
2+
3+
4+
// -*- rust -*-
5+
6+
// Tests for if as expressions returning boxed types
7+
fn test_box() {
8+
let rs = if true { ~100 } else { ~101 };
9+
assert (*rs == 100);
10+
}
11+
12+
fn main() { test_box(); }
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
fn fix_help<A, ~B>(f: fn(fn(A) -> B, A) -> B, x: A) -> B {
2+
ret f(bind fix_help(f, _), x);
3+
}
4+
5+
fn fix<A, ~B>(f: fn(fn(A) -> B, A) -> B) -> fn(A) -> B {
6+
ret bind fix_help(f, _);
7+
}
8+
9+
fn fact_(f: fn(int) -> int, n: int) -> int {
10+
// fun fact 0 = 1
11+
ret if n == 0 { 1 } else { n * f(n - 1) };
12+
}
13+
14+
fn main() {
15+
let fact = fix(fact_);
16+
assert (fact(5) == 120);
17+
assert (fact(2) == 2);
18+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
// xfail-test
2+
3+
obj ob<K>(k: K) {
4+
iter foo() -> ~{a: K} { put ~{a: k}; }
5+
}
6+
7+
fn x(o: ob<str>) { for each i: ~{a: str} in o.foo() { } }
8+
9+
fn main() { let o = ob::<str>("hi" + "there"); x(o); }
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
3+
fn id<~T>(t: T) -> T { ret t; }
4+
5+
fn main() {
6+
let expected = ~100;
7+
let actual = id::<~int>(expected);
8+
log *actual;
9+
assert (*expected == *actual);
10+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
2+
3+
type recbox<T> = {x: ~T};
4+
5+
fn reclift<T>(t: T) -> recbox<T> { ret {x: ~t}; }
6+
7+
fn main() {
8+
let foo: int = 17;
9+
let rbfoo: recbox<int> = reclift::<int>(foo);
10+
assert (*rbfoo.x == foo);
11+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
// xfail-test
2+
3+
fn f<T>(x: ~T) -> ~T { ret x; }
4+
5+
fn main() { let x = f(~3); log *x; }
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// xfail-test
2+
3+
fn box<T>(x: {x: T, y: T, z: T}) -> ~{x: T, y: T, z: T} { ret ~x; }
4+
5+
fn main() {
6+
let x: ~{x: int, y: int, z: int} = box::<int>({x: 1, y: 2, z: 3});
7+
assert (x.y == 2);
8+
}
Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
2+
3+
fn leaky<T>(t: T) { }
4+
5+
fn main() { let x = ~10; leaky::<~int>(x); }
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// xfail-test
2+
3+
fn test(x: bool, foo: ~{x: int, y: int, z: int}) -> int {
4+
let bar = foo;
5+
let y: ~{x: int, y: int, z: int};
6+
if x { y <- bar; } else { y = ~{x: 4, y: 5, z: 6}; }
7+
ret y.y;
8+
}
9+
10+
fn main() {
11+
let x = ~{x: 1, y: 2, z: 3};
12+
assert (test(true, x) == 2);
13+
assert (test(true, x) == 2);
14+
assert (test(true, x) == 2);
15+
assert (test(false, x) == 5);
16+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
2+
3+
fn main() { let x = ~{x: 1, y: 2, z: 3}; let y <- x; assert (y.y == 2); }
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
// xfail-test
2+
use std;
3+
import std::uint;
4+
5+
fn test(x: bool, foo: ~{x: int, y: int, z: int}) -> int {
6+
let bar = foo;
7+
let y: ~{x: int, y: int, z: int};
8+
if x { y <- bar; } else { y = ~{x: 4, y: 5, z: 6}; }
9+
ret y.y;
10+
}
11+
12+
fn main() {
13+
let x = ~{x: 1, y: 2, z: 3};
14+
for each i: uint in uint::range(0u, 10000u) {
15+
assert (test(true, x) == 2);
16+
}
17+
assert (test(false, x) == 5);
18+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// xfail-test
2+
use std;
3+
import std::uint;
4+
5+
fn test(foo: ~{a: int, b: int, c: int}) -> ~{a: int, b: int, c: int} {
6+
let bar <- foo;
7+
let baz <- bar;
8+
let quux <- baz;
9+
ret quux;
10+
}
11+
12+
fn main() { let x = ~{a: 1, b: 2, c: 3}; let y = test(x); assert (y.c == 3); }
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
fn test(-foo: ~[int]) { assert (foo[0] == 10); }
2+
3+
fn main() {
4+
let x = ~[10];
5+
// Test forgetting a local by move-in
6+
test(x);
7+
8+
// Test forgetting a temporary by move-in.
9+
test(~[10]);
10+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// xfail-test
2+
3+
type foo = {a: int, b: uint};
4+
tag bar { u(~foo); w(int); }
5+
6+
fn main() {
7+
assert (alt u(~{a: 10, b: 40u}) {
8+
u(~{a: a, b: b}) { a + (b as int) }
9+
_ { 66 }
10+
} == 50);
11+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
// xfail-win32
2+
use std;
3+
import std::task;
4+
5+
fn f() {
6+
task::unsupervise();
7+
let a = ~0;
8+
fail;
9+
}
10+
11+
fn main() {
12+
let g = f;
13+
task::spawn(g);
14+
}

0 commit comments

Comments
 (0)