Source code

Revision control

Copy as Markdown

Other Tools

// |reftest| async
// Copyright (C) 2022 Igalia, S.L. All rights reserved.
// This code is governed by the BSD license found in the LICENSE file.
/*---
description: |
Thenables that reject with instances of the specified constructor function
satisfy the assertion, without collision with error constructors of the same name.
flags: [async]
includes: [asyncHelpers.js]
---*/
var intrinsicTypeError = TypeError;
asyncTest(async function () {
function TypeError() {}
var caught = false;
var p = assert.throwsAsync(
TypeError,
async function () {
throw new TypeError();
},
"Throws an instance of the matching custom TypeError"
);
assert(p instanceof Promise);
await p;
p = assert.throwsAsync(intrinsicTypeError, async function () {
throw new TypeError();
});
assert(p instanceof Promise);
try {
await p;
} catch (err) {
caught = true;
assert.sameValue(
err.constructor,
Test262Error,
"Expected a Test262Error, but a '" +
err.constructor.name +
"' was thrown."
);
} finally {
assert(
caught,
"assert.throwsAsync did not reject a collision of constructor names"
);
}
caught = false;
p = assert.throwsAsync(TypeError, async function () {
throw new intrinsicTypeError();
});
assert(p instanceof Promise);
try {
await p;
} catch (err) {
caught = true;
assert.sameValue(
err.constructor,
Test262Error,
"Expected a Test262Error, but a '" +
err.constructor.name +
"' was thrown."
);
} finally {
assert(
caught,
"assert.throwsAsync did not reject a collision of constructor names"
);
}
})