summaryrefslogtreecommitdiff
path: root/test/wasm2js/empty_loop.wast
diff options
context:
space:
mode:
authorAlon Zakai <azakai@google.com>2024-11-21 11:26:33 -0800
committerGitHub <noreply@github.com>2024-11-21 11:26:33 -0800
commit3342d56e4a13170c094a29138b32ff17cad4c01d (patch)
tree8a63abc6e8f0e9cdb01eef40ffbd9010bf009d8b /test/wasm2js/empty_loop.wast
parentaf5f74aeb3c53081ffaedbde18a77bdede0a697e (diff)
downloadbinaryen-3342d56e4a13170c094a29138b32ff17cad4c01d.tar.gz
binaryen-3342d56e4a13170c094a29138b32ff17cad4c01d.tar.bz2
binaryen-3342d56e4a13170c094a29138b32ff17cad4c01d.zip
[wasm2js] Properly handle loops without labels (#7100)
When a loop has no name, the name does not matter, but we also cannot emit the same name for all such loops, as that is invalid JS. Just do not emit a while(){} at all in that case, as no continue can exist anyhow. Fixes #7099 Also fix two missing * in error reporting logic, that was printing pointers rather than the expression we wanted to print. I think we changed how iostream prints things years ago, and forgot to update these.
Diffstat (limited to 'test/wasm2js/empty_loop.wast')
-rw-r--r--test/wasm2js/empty_loop.wast18
1 files changed, 18 insertions, 0 deletions
diff --git a/test/wasm2js/empty_loop.wast b/test/wasm2js/empty_loop.wast
new file mode 100644
index 000000000..8f22c033d
--- /dev/null
+++ b/test/wasm2js/empty_loop.wast
@@ -0,0 +1,18 @@
+(module
+ (global $g (mut i32) (i32.const 0))
+
+ (func $test (export "test")
+ ;; Loops without labels. We should not emit anything invalid here (like a
+ ;; null name, which would end up identical between the two, which is wrong).
+ (loop
+ (loop
+ ;; Some content, so the loop is not trivial.
+ (global.set $g
+ (i32.const 0)
+ )
+ (unreachable)
+ )
+ (unreachable)
+ )
+ )
+)