Skip to content

Commit f99cf2d

Browse files
committed
Add a number of unwinding tests
Issue #236
1 parent 4fba02c commit f99cf2d

11 files changed

+130
-0
lines changed

src/test/run-fail/unwind-assert.rs

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
// error-pattern:fail
2+
3+
fn main() {
4+
let a = @0;
5+
assert false;
6+
}

src/test/run-fail/unwind-check.rs

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
// error-pattern:fail
2+
3+
pure fn p(a: @int) -> bool { false }
4+
5+
fn main() {
6+
let a = @0;
7+
check p(a);
8+
}

src/test/run-fail/unwind-closure.rs

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// error-pattern:fail
2+
3+
fn f(a: @int) {
4+
fail;
5+
}
6+
7+
fn main() {
8+
let g = bind f(@0);
9+
g();
10+
}
+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
// error-pattern:fail
2+
3+
fn main() {
4+
let a: @int = {
5+
fail;
6+
};
7+
}

src/test/run-fail/unwind-iter.rs

+12
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// error-pattern:fail
2+
3+
iter x() -> int {
4+
fail;
5+
put 0;
6+
}
7+
8+
fn main() {
9+
let a = @0;
10+
for each x in x() {
11+
}
12+
}

src/test/run-fail/unwind-nested.rs

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
// error-pattern:fail
2+
3+
fn main() {
4+
let a = @0;
5+
{
6+
let b = @0;
7+
{
8+
fail;
9+
}
10+
}
11+
}

src/test/run-fail/unwind-stacked.rs

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
// error-pattern:fail
2+
3+
fn f() {
4+
let a = @0;
5+
fail;
6+
}
7+
8+
fn g() {
9+
let b = @0;
10+
f();
11+
}
12+
13+
fn main() {
14+
let a = @0;
15+
g();
16+
}
+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// error-pattern:fail
2+
3+
fn f() {
4+
fail;
5+
}
6+
7+
fn main() {
8+
f();
9+
let a = @0;
10+
}

src/test/run-pass/unwind-box.rs

+13
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
use std;
2+
import std::task;
3+
4+
fn f() {
5+
task::unsupervise();
6+
let a = @0;
7+
fail;
8+
}
9+
10+
fn main() {
11+
let g = f;
12+
task::spawn(g);
13+
}

src/test/run-pass/unwind-resource.rs

+20
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
use std;
2+
import std::task;
3+
import std::comm;
4+
5+
resource complainer(c: comm::chan<bool>) {
6+
comm::send(c, true);
7+
}
8+
9+
fn f(c: -comm::chan<bool>) {
10+
task::unsupervise();
11+
let c <- complainer(c);
12+
fail;
13+
}
14+
15+
fn main() {
16+
let p = comm::port();
17+
let c = comm::chan(p);
18+
task::spawn(bind f(c));
19+
assert comm::recv(p);
20+
}

src/test/run-pass/unwind-resource2.rs

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
use std;
2+
import std::task;
3+
import std::comm;
4+
5+
resource complainer(c: @int) {
6+
}
7+
8+
fn f() {
9+
task::unsupervise();
10+
let c <- complainer(@0);
11+
fail;
12+
}
13+
14+
fn main() {
15+
let g = f;
16+
task::spawn(g);
17+
}

0 commit comments

Comments
 (0)