Source code

Revision control

Copy as Markdown

Other Tools

// |jit-test| skip-if: wasmGcEnabled()
const { CompileError, validate } = WebAssembly;
const UNRECOGNIZED_OPCODE_OR_BAD_TYPE = /unrecognized opcode|gc not enabled|invalid heap type|invalid inline block type|bad type|Invalid type|invalid function type/;
let simpleTests = [
"(module (func (drop (ref.null eq))))",
"(module (func $test (local eqref)))",
"(module (func $test (param eqref)))",
"(module (func $test (result eqref) (ref.null eq)))",
"(module (func $test (block (result eqref) (unreachable)) unreachable))",
"(module (func $test (result i32) (local eqref) (ref.is_null (local.get 0))))",
`(module (import "a" "b" (func (param eqref))))`,
`(module (import "a" "b" (func (result eqref))))`,
`(module (type $s (struct)))`,
];
// Test that use of gc-types fails when gc is disabled.
for (let src of simpleTests) {
let bin = wasmTextToBinary(src);
assertEq(validate(bin), false);
wasmCompilationShouldFail(bin, UNRECOGNIZED_OPCODE_OR_BAD_TYPE);
}