summaryrefslogtreecommitdiffstats
path: root/js/src/jit-test/tests/wasm/tail-calls/return-call-indirect-syntax.js
diff options
context:
space:
mode:
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.js117
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)
+ )
+ )
+ )`);