diff options
Diffstat (limited to 'js/src/jit-test/tests/wasm/tail-calls/return-call-indirect-syntax.js')
-rw-r--r-- | js/src/jit-test/tests/wasm/tail-calls/return-call-indirect-syntax.js | 117 |
1 files changed, 117 insertions, 0 deletions
diff --git a/js/src/jit-test/tests/wasm/tail-calls/return-call-indirect-syntax.js b/js/src/jit-test/tests/wasm/tail-calls/return-call-indirect-syntax.js new file mode 100644 index 0000000000..aa0ab5eebf --- /dev/null +++ b/js/src/jit-test/tests/wasm/tail-calls/return-call-indirect-syntax.js @@ -0,0 +1,117 @@ +// |jit-test| skip-if: !wasmTailCallsEnabled() + +function assertInvalidSyntax(module) { + assertErrorMessage(() => wasmTextToBinary(module), SyntaxError, + /wasm text error/); +} + +assertInvalidSyntax(` + (module + (type $sig (func (param i32) (result i32))) + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (type $sig) (result i32) (param i32) + (i32.const 0) (i32.const 0) + ) + ) + )`); + +assertInvalidSyntax(` + (module + (type $sig (func (param i32 i32) (result i32 i32))) + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (param i32) (type $sig) (result i32) + (i32.const 0) (i32.const 0) + ) + ) + )`); + +assertInvalidSyntax(` + (module + (type $sig (func (param i32) (result i32))) + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (param i32) (result i32) (type $sig) + (i32.const 0) (i32.const 0) + ) + ) + )`); + +assertInvalidSyntax(` + (module + (type $sig (func (param i32) (result i32))) + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (result i32) (type $sig) (param i32) + (i32.const 0) (i32.const 0) + ) + ) + )`); + +assertInvalidSyntax(` + (module + (type $sig (func (param i32) (result i32))) + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (result i32) (param i32) (type $sig) + (i32.const 0) (i32.const 0) + ) + ) + )`); + +assertInvalidSyntax(` + (module + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (result i32) (param i32) + (i32.const 0) (i32.const 0) + ) + ) + )`); + +assertInvalidSyntax(` + (module + (table 0 anyfunc) + (func (return_call_indirect (param $x i32) (i32.const 0) (i32.const 0))) + )`); + +assertInvalidSyntax(` + (module + (type $sig (func)) + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (type $sig) (result i32) (i32.const 0)) + ) + )`); + +assertInvalidSyntax(` + (module + (type $sig (func (param i32) (result i32))) + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (type $sig) (result i32) (i32.const 0)) + ) + )`); + +assertInvalidSyntax(` + (module + (type $sig (func (param i32) (result i32))) + (table 0 anyfunc) + (func + (return_call_indirect (type $sig) (param i32) + (i32.const 0) (i32.const 0) + ) + ) + )`); + +assertInvalidSyntax(` + (module + (type $sig (func (param i32 i32) (result i32))) + (table 0 anyfunc) + (func (result i32) + (return_call_indirect (type $sig) (param i32) (result i32) + (i32.const 0) (i32.const 0) + ) + ) + )`); |