/** * `t` should be a function that takes at least three arguments: * * - the name of the test; * - the expected error (to be passed to `assert_throws_js`); * - a function that takes a `WasmModuleBuilder` and initializes it; * - (optionally) an options object. * * The function is expected to create a test that checks if instantiating a * module with the result of the `WasmModuleBuilder` and the options object * (if any) yields the correct error.
*/ function test_bad_imports(t) { function value_type(type) { switch (type) { case"i32": return kWasmI32; case"i64": return kWasmI64; case"f32": return kWasmF32; case"f64": return kWasmF64; default: thrownew TypeError(`Unexpected type ${type}`);
}
}
for (const value of [null, true, "", Symbol(), 1, 0.1, NaN]) {
t(`Non-object imports argument: ${format_value(value)}`,
TypeError,
builder => {},
value);
}
for (const type of ["i32", "i64", "f32", "f64"]) { const extendedNonGlobals = nonGlobals.concat([
type === "i64" ? [0, "Number"] : [0n, "BigInt"],
[new WebAssembly.Global({value: type === "f32" ? "f64" : "f32"}), "WebAssembly.Global object (wrong value type)"],
]); for (const [value, name = format_value(value)] of extendedNonGlobals) {
t(`Importing an ${type} global with an incorrectly-typed value: ${name}`,
WebAssembly.LinkError,
builder => {
builder.addImportedGlobal("module", "global", value_type(type));
},
{ "module": { "global": value,
},
});
}
}
for (const type of ["i32", "i64", "f32", "f64"]) { const value = type === "i64" ? 0n : 0;
t(`Importing an ${type} mutable global with a primitive value`,
WebAssembly.LinkError,
builder => {
builder.addImportedGlobal("module", "global", value_type(type), true);
},
{ "module": { "global": value,
},
});
const global = new WebAssembly.Global({ "value": type }, value);
t(`Importing an ${type} mutable global with an immutable Global object`,
WebAssembly.LinkError,
builder => {
builder.addImportedGlobal("module", "global", value_type(type), true);
},
{ "module": { "global": global,
},
});
}
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.