Source code
Revision control
Copy as Markdown
Other Tools
// |jit-test| skip-if: !wasmComponentsEnabled()
assertErrorMessage(() => new WebAssembly.Component(new Uint8Array([
0,
])), WebAssembly.CompileError, /failed to match magic number/);
assertErrorMessage(() => new WebAssembly.Component(new Uint8Array([
0, 0, 0, 0,
])), WebAssembly.CompileError, /failed to match magic number/);
assertErrorMessage(() => new WebAssembly.Component(new Uint8Array([
0, 0x61, 0x73, 0x6D,
])), WebAssembly.CompileError, /failed to read version/);
assertErrorMessage(() => new WebAssembly.Component(new Uint8Array([
0, 0x61, 0x73, 0x6D,
0, 0, 0, 0,
])), WebAssembly.CompileError, /binary version .* does not match/);
// Core module version should be rejected by the Component constructor.
assertErrorMessage(() => new WebAssembly.Component(new Uint8Array([
0, 0x61, 0x73, 0x6D,
1, 0, 0, 0,
])), WebAssembly.CompileError, /binary version .* does not match/);
// Valid empty component.
new WebAssembly.Component(new Uint8Array([
0, 0x61, 0x73, 0x6D,
0x0d, 0, 1, 0,
]));
// TODO(wasm-cm): Custom sections (section ID 0) should be silently skipped,
// but they currently fail with "unexpected section ID".
// Section framing errors
// Section length extends past end of component.
assertErrorMessage(() => new WebAssembly.Component(new Uint8Array([
0, 0x61, 0x73, 0x6D,
0x0d, 0, 1, 0,
0x01, 0x10, // core module section, section length too long
0x00, 0x61, 0x73, 0x6D,
0x01, 0x00, 0x00, 0x00,
])), WebAssembly.CompileError, /invalid section length/);
// Unknown section ID.
assertErrorMessage(() => new WebAssembly.Component(new Uint8Array([
0, 0x61, 0x73, 0x6D,
0x0d, 0, 1, 0,
0xFF, 0x00, // unknown section ID 0xFF, length 0
])), WebAssembly.CompileError, /unexpected section ID/);
// Section parsing stops with bytes left over
assertErrorMessage(() => new WebAssembly.Component(new Uint8Array([
0, 0x61, 0x73, 0x6D,
0x0d, 0, 1, 0,
0x07, 0x04, // type section, data shorter than section length
0x00,
0x00, 0x06, // custom section to pad out the component
0x05,
0x64, 0x75, 0x6D, 0x6D, 0x79, // "dummy", no data
])), WebAssembly.CompileError, /too many bytes in section/);