mirror of
https://github.com/LadybirdBrowser/ladybird
synced 2026-05-11 09:27:00 +02:00
63 lines
1.1 KiB
JavaScript
63 lines
1.1 KiB
JavaScript
// Catch parameter is scoped to the catch block.
|
|
function basic_catch() {
|
|
try {
|
|
throw 1;
|
|
} catch (err) {
|
|
return err;
|
|
}
|
|
}
|
|
|
|
// Catch with destructuring.
|
|
function catch_destruct() {
|
|
try {
|
|
throw { msg: "oops", code: 42 };
|
|
} catch ({ msg, code }) {
|
|
return msg + code;
|
|
}
|
|
}
|
|
|
|
// Catch parameter shadows outer variable.
|
|
function catch_shadow() {
|
|
let err = "outer";
|
|
try {
|
|
throw "inner";
|
|
} catch (err) {
|
|
err;
|
|
}
|
|
return err;
|
|
}
|
|
|
|
// No catch parameter (catch without binding).
|
|
function catch_no_param() {
|
|
try {
|
|
throw 1;
|
|
} catch {
|
|
return 2;
|
|
}
|
|
}
|
|
|
|
// Multiple catch clauses with destructuring patterns.
|
|
// Tests that pattern_bound_names don't leak between catch clauses.
|
|
function multiple_catch_destruct() {
|
|
try {
|
|
try {
|
|
throw { a: 1 };
|
|
} catch ({ a }) {
|
|
a;
|
|
}
|
|
throw { b: 2 };
|
|
} catch ({ b }) {
|
|
return b;
|
|
}
|
|
}
|
|
|
|
// Catch with eval: poisons the catch block.
|
|
function catch_with_eval() {
|
|
try {
|
|
throw 1;
|
|
} catch (err) {
|
|
eval("");
|
|
return err;
|
|
}
|
|
}
|