From 36d22d82aa202bb199967e9512281e9a53db42c9 Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 21:33:14 +0200 Subject: Adding upstream version 115.7.0esr. Signed-off-by: Daniel Baumann --- js/src/jit-test/tests/wasm/gc/cast-extern.js | 54 ++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100644 js/src/jit-test/tests/wasm/gc/cast-extern.js (limited to 'js/src/jit-test/tests/wasm/gc/cast-extern.js') diff --git a/js/src/jit-test/tests/wasm/gc/cast-extern.js b/js/src/jit-test/tests/wasm/gc/cast-extern.js new file mode 100644 index 0000000000..9fd9ddf2c9 --- /dev/null +++ b/js/src/jit-test/tests/wasm/gc/cast-extern.js @@ -0,0 +1,54 @@ +// |jit-test| skip-if: !wasmGcEnabled() + +// Casting an external value is an expected failure +let { refCast, refTest, brOnCast, brOnCastFail } = wasmEvalText(` + (module + (; give this struct a unique identity to avoid conflict with + the struct type defined in wasm.js ;) + (type (struct i64 i32 i64 i32)) + + (func (export "refTest") (param externref) (result i32) + local.get 0 + extern.internalize + ref.test (ref 0) + ) + (func (export "refCast") (param externref) (result i32) + local.get 0 + extern.internalize + ref.cast (ref null 0) + drop + i32.const 0 + ) + (func (export "brOnCast") (param externref) (result i32) + (block (result (ref 0)) + local.get 0 + extern.internalize + br_on_cast 0 anyref (ref 0) + drop + i32.const 0 + br 1 + ) + drop + i32.const 1 + ) + (func (export "brOnCastFail") (param externref) (result i32) + (block (result anyref) + local.get 0 + extern.internalize + br_on_cast_fail 0 anyref (ref 0) + drop + i32.const 1 + br 1 + ) + drop + i32.const 0 + ) + ) +`).exports; + +for (let v of WasmNonNullExternrefValues) { + assertErrorMessage(() => refCast(v), WebAssembly.RuntimeError, /bad cast/); + assertEq(refTest(v), 0); + assertEq(brOnCast(v), 0); + assertEq(brOnCastFail(v), 0); +} -- cgit v1.2.3