test: More tests for unwinding + morestack

This commit is contained in:
Brian Anderson 2011-12-05 19:21:46 -08:00
parent 58844aee42
commit 8d8148f1f7
2 changed files with 43 additions and 3 deletions

View File

@ -7,7 +7,10 @@
// See the hack in upcall_call_shim_on_c_stack where it messes
// with the stack limit.
use std;
native mod rustrt {
fn set_min_stack(size: uint);
fn pin_task();
}
@ -26,10 +29,13 @@ resource and_then_get_big_again(_i: ()) {
getbig(i - 1);
}
}
getbig(100000);
getbig(10000);
}
fn main() {
let r = and_then_get_big_again(());
getbig_call_c_and_fail(100000);
rustrt::set_min_stack(256u);
std::task::spawn((), fn (&&_i: ()) {
let r = and_then_get_big_again(());
getbig_call_c_and_fail(10000);
});
}

View File

@ -0,0 +1,34 @@
// xfail-test
// error-pattern:explicit failure
// compile-flags:--stack-growth
// Just testing unwinding
use std;
native mod rustrt {
fn set_min_stack(size: uint);
}
fn getbig_and_fail(&&i: int) {
let r = and_then_get_big_again(@0);
if i != 0 {
getbig_and_fail(i - 1);
} else {
fail;
}
}
resource and_then_get_big_again(_i: @int) {
fn getbig(i: int) {
if i != 0 {
getbig(i - 1);
}
}
getbig(1000);
}
fn main() {
rustrt::set_min_stack(256u);
std::task::spawn(1000, getbig_and_fail);
}