Source code

Revision control

Copy as Markdown

Other Tools

Test Info:

// META: global=window,dedicatedworker,jsshell,shadowrealm
// META: script=/wasm/jsapi/assertions.js
test(() => {
assert_function_name(
WebAssembly.Exception,
"Exception",
"WebAssembly.Exception"
);
}, "name");
test(() => {
assert_function_length(WebAssembly.Exception, 1, "WebAssembly.Exception");
}, "length");
test(() => {
assert_throws_js(TypeError, () => new WebAssembly.Exception());
}, "No arguments");
test(() => {
const tag = new WebAssembly.Tag({ parameters: [] });
assert_throws_js(TypeError, () => WebAssembly.Exception(tag));
}, "Calling");
test(() => {
const invalidArguments = [
undefined,
null,
false,
true,
"",
"test",
Symbol(),
1,
NaN,
{},
];
for (const invalidArgument of invalidArguments) {
assert_throws_js(
TypeError,
() => new WebAssembly.Exception(invalidArgument),
`new Exception(${format_value(invalidArgument)})`
);
}
}, "Invalid descriptor argument");
test(() => {
const typesAndArgs = [
["i32", 123n],
["i32", Symbol()],
["f32", 123n],
["f64", 123n],
["i64", undefined],
];
for (const typeAndArg of typesAndArgs) {
const tag = new WebAssembly.Tag({ parameters: [typeAndArg[0]] });
assert_throws_js(
TypeError,
() => new WebAssembly.Exception(tag, typeAndArg[1])
);
}
}, "Invalid exception argument");