You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

61 lines
1.1 KiB

/*
* Test that we can continue after a catchstack limit error.
*/
/*===
RangeError
true
===*/
/* The current limits for callstack and catchstack are the same
* (10000), so a recursive call with more than one catcher should
* ensure that the catchstack is exhausted first.
*
* This only works (= hits catchstack limit) if valstack limit is
* significantly higher (currently 100000).
*/
function f1() {
try {
try {
try {
try {
f1();
} finally {
}
} finally {
}
} finally {
}
} finally {
}
}
try {
f1();
} catch (e) {
print(e.name);
// ensure that it is indeed the catchstack which failed; Rhino and V8
// will fail this test of course
print(/catch/i.test(e.message));
}
/*===
6765
===*/
/* Test that we can continue normally. Just a simple recursive call test here. */
function fib(x) {
if (x == 0) { return 0; }
if (x == 1) { return 1; }
return fib(x - 1) + fib(x - 2);
}
try {
print(fib(20));
} catch (e) {
print(e.name);
}