Source code

Revision control

Copy as Markdown

Other Tools

// |reftest| skip-if(!xulRuntime.shell) -- needs drainJobQueue
class ExpectedError extends Error {
name = "ExpectedError";
}
class UnexpectedError extends Error {
name = "UnexpectedError";
}
function throwExpectedError() {
throw new ExpectedError();
}
async function throwsInParameterExpression(a = throwExpectedError()) {
throw new UnexpectedError();
}
assertEventuallyThrows(throwsInParameterExpression(), ExpectedError);
async function throwsInObjectDestructuringParameterEmpty({}) {
throw new UnexpectedError();
}
assertEventuallyThrows(throwsInObjectDestructuringParameterEmpty(), TypeError);
let objectThrowingExpectedError = {
get a() {
throw new ExpectedError();
}
}
async function throwsInObjectDestructuringParameter({a}) {
throw new UnexpectedError();
}
assertEventuallyThrows(throwsInObjectDestructuringParameter(), TypeError);
assertEventuallyThrows(throwsInObjectDestructuringParameter(objectThrowingExpectedError), ExpectedError);
let iteratorThrowingExpectedError = {
[Symbol.iterator]() {
throw new ExpectedError();
}
};
async function throwsInArrayDestructuringParameterEmpty([]) {
throw new UnexpectedError();
}
assertEventuallyThrows(throwsInArrayDestructuringParameterEmpty(), TypeError);
assertEventuallyThrows(throwsInArrayDestructuringParameterEmpty(iteratorThrowingExpectedError), ExpectedError);
async function throwsInArrayDestructuringParameter([a]) {
throw new UnexpectedError();
}
assertEventuallyThrows(throwsInArrayDestructuringParameter(), TypeError);
assertEventuallyThrows(throwsInArrayDestructuringParameter(iteratorThrowingExpectedError), ExpectedError);
if (typeof reportCompare === "function")
reportCompare(true, true);