...
1;; Test `br_if` operator
2
3(module
4 (func $dummy)
5
6 (func (export "type-i32")
7 (block (drop (i32.ctz (br_if 0 (i32.const 0) (i32.const 1)))))
8 )
9 (func (export "type-i64")
10 (block (drop (i64.ctz (br_if 0 (i64.const 0) (i32.const 1)))))
11 )
12 (func (export "type-f32")
13 (block (drop (f32.neg (br_if 0 (f32.const 0) (i32.const 1)))))
14 )
15 (func (export "type-f64")
16 (block (drop (f64.neg (br_if 0 (f64.const 0) (i32.const 1)))))
17 )
18
19 (func (export "type-i32-value") (result i32)
20 (block (result i32) (i32.ctz (br_if 0 (i32.const 1) (i32.const 1))))
21 )
22 (func (export "type-i64-value") (result i64)
23 (block (result i64) (i64.ctz (br_if 0 (i64.const 2) (i32.const 1))))
24 )
25 (func (export "type-f32-value") (result f32)
26 (block (result f32) (f32.neg (br_if 0 (f32.const 3) (i32.const 1))))
27 )
28 (func (export "type-f64-value") (result f64)
29 (block (result f64) (f64.neg (br_if 0 (f64.const 4) (i32.const 1))))
30 )
31
32 (func (export "as-block-first") (param i32) (result i32)
33 (block (br_if 0 (local.get 0)) (return (i32.const 2))) (i32.const 3)
34 )
35 (func (export "as-block-mid") (param i32) (result i32)
36 (block (call $dummy) (br_if 0 (local.get 0)) (return (i32.const 2)))
37 (i32.const 3)
38 )
39 (func (export "as-block-last") (param i32)
40 (block (call $dummy) (call $dummy) (br_if 0 (local.get 0)))
41 )
42 (func (export "as-block-first-value") (param i32) (result i32)
43 (block (result i32)
44 (drop (br_if 0 (i32.const 10) (local.get 0))) (return (i32.const 11))
45 )
46 )
47 (func (export "as-block-mid-value") (param i32) (result i32)
48 (block (result i32)
49 (call $dummy)
50 (drop (br_if 0 (i32.const 20) (local.get 0)))
51 (return (i32.const 21))
52 )
53 )
54 (func (export "as-block-last-value") (param i32) (result i32)
55 (block (result i32)
56 (call $dummy) (call $dummy) (br_if 0 (i32.const 11) (local.get 0))
57 )
58 )
59
60 (func (export "as-loop-first") (param i32) (result i32)
61 (block (loop (br_if 1 (local.get 0)) (return (i32.const 2)))) (i32.const 3)
62 )
63 (func (export "as-loop-mid") (param i32) (result i32)
64 (block (loop (call $dummy) (br_if 1 (local.get 0)) (return (i32.const 2))))
65 (i32.const 4)
66 )
67 (func (export "as-loop-last") (param i32)
68 (loop (call $dummy) (br_if 1 (local.get 0)))
69 )
70
71 (func (export "as-br-value") (result i32)
72 (block (result i32) (br 0 (br_if 0 (i32.const 1) (i32.const 2))))
73 )
74
75 (func (export "as-br_if-cond")
76 (block (br_if 0 (br_if 0 (i32.const 1) (i32.const 1))))
77 )
78 (func (export "as-br_if-value") (result i32)
79 (block (result i32)
80 (drop (br_if 0 (br_if 0 (i32.const 1) (i32.const 2)) (i32.const 3)))
81 (i32.const 4)
82 )
83 )
84 (func (export "as-br_if-value-cond") (param i32) (result i32)
85 (block (result i32)
86 (drop (br_if 0 (i32.const 2) (br_if 0 (i32.const 1) (local.get 0))))
87 (i32.const 4)
88 )
89 )
90
91 (func (export "as-br_table-index")
92 (block (br_table 0 0 0 (br_if 0 (i32.const 1) (i32.const 2))))
93 )
94 (func (export "as-br_table-value") (result i32)
95 (block (result i32)
96 (br_table 0 0 0 (br_if 0 (i32.const 1) (i32.const 2)) (i32.const 3)) (i32.const 4)
97 )
98 )
99 (func (export "as-br_table-value-index") (result i32)
100 (block (result i32)
101 (br_table 0 0 (i32.const 2) (br_if 0 (i32.const 1) (i32.const 3))) (i32.const 4)
102 )
103 )
104 (func (export "as-return-value") (result i64)
105 (block (result i64) (return (br_if 0 (i64.const 1) (i32.const 2))))
106 )
107
108 (func (export "as-if-cond") (param i32) (result i32)
109 (block (result i32)
110 (if (result i32)
111 (br_if 0 (i32.const 1) (local.get 0))
112 (then (i32.const 2))
113 (else (i32.const 3))
114 )
115 )
116 )
117 (func (export "as-if-then") (param i32 i32)
118 (block
119 (if (local.get 0) (then (br_if 1 (local.get 1))) (else (call $dummy)))
120 )
121 )
122 (func (export "as-if-else") (param i32 i32)
123 (block
124 (if (local.get 0) (then (call $dummy)) (else (br_if 1 (local.get 1))))
125 )
126 )
127
128 (func (export "as-select-first") (param i32) (result i32)
129 (block (result i32)
130 (select (br_if 0 (i32.const 3) (i32.const 10)) (i32.const 2) (local.get 0))
131 )
132 )
133 (func (export "as-select-second") (param i32) (result i32)
134 (block (result i32)
135 (select (i32.const 1) (br_if 0 (i32.const 3) (i32.const 10)) (local.get 0))
136 )
137 )
138 (func (export "as-select-cond") (result i32)
139 (block (result i32)
140 (select (i32.const 1) (i32.const 2) (br_if 0 (i32.const 3) (i32.const 10)))
141 )
142 )
143
144 (func $f (param i32 i32 i32) (result i32) (i32.const -1))
145 (func (export "as-call-first") (result i32)
146 (block (result i32)
147 (call $f
148 (br_if 0 (i32.const 12) (i32.const 1)) (i32.const 2) (i32.const 3)
149 )
150 )
151 )
152 (func (export "as-call-mid") (result i32)
153 (block (result i32)
154 (call $f
155 (i32.const 1) (br_if 0 (i32.const 13) (i32.const 1)) (i32.const 3)
156 )
157 )
158 )
159 (func (export "as-call-last") (result i32)
160 (block (result i32)
161 (call $f
162 (i32.const 1) (i32.const 2) (br_if 0 (i32.const 14) (i32.const 1))
163 )
164 )
165 )
166
167 (func $func (param i32 i32 i32) (result i32) (local.get 0))
168 (type $check (func (param i32 i32 i32) (result i32)))
169 (table funcref (elem $func))
170 (func (export "as-call_indirect-func") (result i32)
171 (block (result i32)
172 (call_indirect (type $check)
173 (br_if 0 (i32.const 4) (i32.const 10))
174 (i32.const 1) (i32.const 2) (i32.const 0)
175 )
176 )
177 )
178
179 (func (export "as-call_indirect-first") (result i32)
180 (block (result i32)
181 (call_indirect (type $check)
182 (i32.const 1) (br_if 0 (i32.const 4) (i32.const 10)) (i32.const 2) (i32.const 0)
183 )
184 )
185 )
186 (func (export "as-call_indirect-mid") (result i32)
187 (block (result i32)
188 (call_indirect (type $check)
189 (i32.const 1) (i32.const 2) (br_if 0 (i32.const 4) (i32.const 10)) (i32.const 0)
190 )
191 )
192 )
193 (func (export "as-call_indirect-last") (result i32)
194 (block (result i32)
195 (call_indirect (type $check)
196 (i32.const 1) (i32.const 2) (i32.const 3) (br_if 0 (i32.const 4) (i32.const 10))
197 )
198 )
199 )
200
201 (func (export "as-local.set-value") (param i32) (result i32)
202 (local i32)
203 (block (result i32)
204 (local.set 0 (br_if 0 (i32.const 17) (local.get 0)))
205 (i32.const -1)
206 )
207 )
208 (func (export "as-local.tee-value") (param i32) (result i32)
209 (block (result i32)
210 (local.tee 0 (br_if 0 (i32.const 1) (local.get 0)))
211 (return (i32.const -1))
212 )
213 )
214 (global $a (mut i32) (i32.const 10))
215 (func (export "as-global.set-value") (param i32) (result i32)
216 (block (result i32)
217 (global.set $a (br_if 0 (i32.const 1) (local.get 0)))
218 (return (i32.const -1))
219 )
220 )
221
222 (memory 1)
223 (func (export "as-load-address") (result i32)
224 (block (result i32) (i32.load (br_if 0 (i32.const 1) (i32.const 1))))
225 )
226 (func (export "as-loadN-address") (result i32)
227 (block (result i32) (i32.load8_s (br_if 0 (i32.const 30) (i32.const 1))))
228 )
229
230 (func (export "as-store-address") (result i32)
231 (block (result i32)
232 (i32.store (br_if 0 (i32.const 30) (i32.const 1)) (i32.const 7)) (i32.const -1)
233 )
234 )
235 (func (export "as-store-value") (result i32)
236 (block (result i32)
237 (i32.store (i32.const 2) (br_if 0 (i32.const 31) (i32.const 1))) (i32.const -1)
238 )
239 )
240
241 (func (export "as-storeN-address") (result i32)
242 (block (result i32)
243 (i32.store8 (br_if 0 (i32.const 32) (i32.const 1)) (i32.const 7)) (i32.const -1)
244 )
245 )
246 (func (export "as-storeN-value") (result i32)
247 (block (result i32)
248 (i32.store16 (i32.const 2) (br_if 0 (i32.const 33) (i32.const 1))) (i32.const -1)
249 )
250 )
251
252 (func (export "as-unary-operand") (result f64)
253 (block (result f64) (f64.neg (br_if 0 (f64.const 1.0) (i32.const 1))))
254 )
255 (func (export "as-binary-left") (result i32)
256 (block (result i32) (i32.add (br_if 0 (i32.const 1) (i32.const 1)) (i32.const 10)))
257 )
258 (func (export "as-binary-right") (result i32)
259 (block (result i32) (i32.sub (i32.const 10) (br_if 0 (i32.const 1) (i32.const 1))))
260 )
261 (func (export "as-test-operand") (result i32)
262 (block (result i32) (i32.eqz (br_if 0 (i32.const 0) (i32.const 1))))
263 )
264 (func (export "as-compare-left") (result i32)
265 (block (result i32) (i32.le_u (br_if 0 (i32.const 1) (i32.const 1)) (i32.const 10)))
266 )
267 (func (export "as-compare-right") (result i32)
268 (block (result i32) (i32.ne (i32.const 10) (br_if 0 (i32.const 1) (i32.const 42))))
269 )
270
271 (func (export "as-memory.grow-size") (result i32)
272 (block (result i32) (memory.grow (br_if 0 (i32.const 1) (i32.const 1))))
273 )
274
275 (func (export "nested-block-value") (param i32) (result i32)
276 (i32.add
277 (i32.const 1)
278 (block (result i32)
279 (drop (i32.const 2))
280 (i32.add
281 (i32.const 4)
282 (block (result i32)
283 (drop (br_if 1 (i32.const 8) (local.get 0)))
284 (i32.const 16)
285 )
286 )
287 )
288 )
289 )
290
291 (func (export "nested-br-value") (param i32) (result i32)
292 (i32.add
293 (i32.const 1)
294 (block (result i32)
295 (drop (i32.const 2))
296 (br 0
297 (block (result i32)
298 (drop (br_if 1 (i32.const 8) (local.get 0))) (i32.const 4)
299 )
300 )
301 (i32.const 16)
302 )
303 )
304 )
305
306 (func (export "nested-br_if-value") (param i32) (result i32)
307 (i32.add
308 (i32.const 1)
309 (block (result i32)
310 (drop (i32.const 2))
311 (drop (br_if 0
312 (block (result i32)
313 (drop (br_if 1 (i32.const 8) (local.get 0))) (i32.const 4)
314 )
315 (i32.const 1)
316 ))
317 (i32.const 16)
318 )
319 )
320 )
321
322 (func (export "nested-br_if-value-cond") (param i32) (result i32)
323 (i32.add
324 (i32.const 1)
325 (block (result i32)
326 (drop (i32.const 2))
327 (drop (br_if 0
328 (i32.const 4)
329 (block (result i32)
330 (drop (br_if 1 (i32.const 8) (local.get 0))) (i32.const 1)
331 )
332 ))
333 (i32.const 16)
334 )
335 )
336 )
337
338 (func (export "nested-br_table-value") (param i32) (result i32)
339 (i32.add
340 (i32.const 1)
341 (block (result i32)
342 (drop (i32.const 2))
343 (br_table 0
344 (block (result i32)
345 (drop (br_if 1 (i32.const 8) (local.get 0))) (i32.const 4)
346 )
347 (i32.const 1)
348 )
349 (i32.const 16)
350 )
351 )
352 )
353
354 (func (export "nested-br_table-value-index") (param i32) (result i32)
355 (i32.add
356 (i32.const 1)
357 (block (result i32)
358 (drop (i32.const 2))
359 (br_table 0
360 (i32.const 4)
361 (block (result i32)
362 (drop (br_if 1 (i32.const 8) (local.get 0))) (i32.const 1)
363 )
364 )
365 (i32.const 16)
366 )
367 )
368 )
369
370)
371
372(assert_return (invoke "type-i32"))
373(assert_return (invoke "type-i64"))
374(assert_return (invoke "type-f32"))
375(assert_return (invoke "type-f64"))
376
377(assert_return (invoke "type-i32-value") (i32.const 1))
378(assert_return (invoke "type-i64-value") (i64.const 2))
379(assert_return (invoke "type-f32-value") (f32.const 3))
380(assert_return (invoke "type-f64-value") (f64.const 4))
381
382(assert_return (invoke "as-block-first" (i32.const 0)) (i32.const 2))
383(assert_return (invoke "as-block-first" (i32.const 1)) (i32.const 3))
384(assert_return (invoke "as-block-mid" (i32.const 0)) (i32.const 2))
385(assert_return (invoke "as-block-mid" (i32.const 1)) (i32.const 3))
386(assert_return (invoke "as-block-last" (i32.const 0)))
387(assert_return (invoke "as-block-last" (i32.const 1)))
388
389(assert_return (invoke "as-block-first-value" (i32.const 0)) (i32.const 11))
390(assert_return (invoke "as-block-first-value" (i32.const 1)) (i32.const 10))
391(assert_return (invoke "as-block-mid-value" (i32.const 0)) (i32.const 21))
392(assert_return (invoke "as-block-mid-value" (i32.const 1)) (i32.const 20))
393(assert_return (invoke "as-block-last-value" (i32.const 0)) (i32.const 11))
394(assert_return (invoke "as-block-last-value" (i32.const 1)) (i32.const 11))
395
396(assert_return (invoke "as-loop-first" (i32.const 0)) (i32.const 2))
397(assert_return (invoke "as-loop-first" (i32.const 1)) (i32.const 3))
398(assert_return (invoke "as-loop-mid" (i32.const 0)) (i32.const 2))
399(assert_return (invoke "as-loop-mid" (i32.const 1)) (i32.const 4))
400(assert_return (invoke "as-loop-last" (i32.const 0)))
401(assert_return (invoke "as-loop-last" (i32.const 1)))
402
403(assert_return (invoke "as-br-value") (i32.const 1))
404
405(assert_return (invoke "as-br_if-cond"))
406(assert_return (invoke "as-br_if-value") (i32.const 1))
407(assert_return (invoke "as-br_if-value-cond" (i32.const 0)) (i32.const 2))
408(assert_return (invoke "as-br_if-value-cond" (i32.const 1)) (i32.const 1))
409
410(assert_return (invoke "as-br_table-index"))
411(assert_return (invoke "as-br_table-value") (i32.const 1))
412(assert_return (invoke "as-br_table-value-index") (i32.const 1))
413
414(assert_return (invoke "as-return-value") (i64.const 1))
415
416(assert_return (invoke "as-if-cond" (i32.const 0)) (i32.const 2))
417(assert_return (invoke "as-if-cond" (i32.const 1)) (i32.const 1))
418(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 0)))
419(assert_return (invoke "as-if-then" (i32.const 4) (i32.const 0)))
420(assert_return (invoke "as-if-then" (i32.const 0) (i32.const 1)))
421(assert_return (invoke "as-if-then" (i32.const 4) (i32.const 1)))
422(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 0)))
423(assert_return (invoke "as-if-else" (i32.const 3) (i32.const 0)))
424(assert_return (invoke "as-if-else" (i32.const 0) (i32.const 1)))
425(assert_return (invoke "as-if-else" (i32.const 3) (i32.const 1)))
426
427(assert_return (invoke "as-select-first" (i32.const 0)) (i32.const 3))
428(assert_return (invoke "as-select-first" (i32.const 1)) (i32.const 3))
429(assert_return (invoke "as-select-second" (i32.const 0)) (i32.const 3))
430(assert_return (invoke "as-select-second" (i32.const 1)) (i32.const 3))
431(assert_return (invoke "as-select-cond") (i32.const 3))
432
433(assert_return (invoke "as-call-first") (i32.const 12))
434(assert_return (invoke "as-call-mid") (i32.const 13))
435(assert_return (invoke "as-call-last") (i32.const 14))
436
437(assert_return (invoke "as-call_indirect-func") (i32.const 4))
438(assert_return (invoke "as-call_indirect-first") (i32.const 4))
439(assert_return (invoke "as-call_indirect-mid") (i32.const 4))
440(assert_return (invoke "as-call_indirect-last") (i32.const 4))
441
442(assert_return (invoke "as-local.set-value" (i32.const 0)) (i32.const -1))
443(assert_return (invoke "as-local.set-value" (i32.const 1)) (i32.const 17))
444
445(assert_return (invoke "as-local.tee-value" (i32.const 0)) (i32.const -1))
446(assert_return (invoke "as-local.tee-value" (i32.const 1)) (i32.const 1))
447
448(assert_return (invoke "as-global.set-value" (i32.const 0)) (i32.const -1))
449(assert_return (invoke "as-global.set-value" (i32.const 1)) (i32.const 1))
450
451(assert_return (invoke "as-load-address") (i32.const 1))
452(assert_return (invoke "as-loadN-address") (i32.const 30))
453
454(assert_return (invoke "as-store-address") (i32.const 30))
455(assert_return (invoke "as-store-value") (i32.const 31))
456(assert_return (invoke "as-storeN-address") (i32.const 32))
457(assert_return (invoke "as-storeN-value") (i32.const 33))
458
459(assert_return (invoke "as-unary-operand") (f64.const 1.0))
460(assert_return (invoke "as-binary-left") (i32.const 1))
461(assert_return (invoke "as-binary-right") (i32.const 1))
462(assert_return (invoke "as-test-operand") (i32.const 0))
463(assert_return (invoke "as-compare-left") (i32.const 1))
464(assert_return (invoke "as-compare-right") (i32.const 1))
465(assert_return (invoke "as-memory.grow-size") (i32.const 1))
466
467(assert_return (invoke "nested-block-value" (i32.const 0)) (i32.const 21))
468(assert_return (invoke "nested-block-value" (i32.const 1)) (i32.const 9))
469(assert_return (invoke "nested-br-value" (i32.const 0)) (i32.const 5))
470(assert_return (invoke "nested-br-value" (i32.const 1)) (i32.const 9))
471(assert_return (invoke "nested-br_if-value" (i32.const 0)) (i32.const 5))
472(assert_return (invoke "nested-br_if-value" (i32.const 1)) (i32.const 9))
473(assert_return (invoke "nested-br_if-value-cond" (i32.const 0)) (i32.const 5))
474(assert_return (invoke "nested-br_if-value-cond" (i32.const 1)) (i32.const 9))
475(assert_return (invoke "nested-br_table-value" (i32.const 0)) (i32.const 5))
476(assert_return (invoke "nested-br_table-value" (i32.const 1)) (i32.const 9))
477(assert_return (invoke "nested-br_table-value-index" (i32.const 0)) (i32.const 5))
478(assert_return (invoke "nested-br_table-value-index" (i32.const 1)) (i32.const 9))
479
480(assert_invalid
481 (module (func $type-false-i32 (block (i32.ctz (br_if 0 (i32.const 0))))))
482 "type mismatch"
483)
484(assert_invalid
485 (module (func $type-false-i64 (block (i64.ctz (br_if 0 (i32.const 0))))))
486 "type mismatch"
487)
488(assert_invalid
489 (module (func $type-false-f32 (block (f32.neg (br_if 0 (i32.const 0))))))
490 "type mismatch"
491)
492(assert_invalid
493 (module (func $type-false-f64 (block (f64.neg (br_if 0 (i32.const 0))))))
494 "type mismatch"
495)
496
497(assert_invalid
498 (module (func $type-true-i32 (block (i32.ctz (br_if 0 (i32.const 1))))))
499 "type mismatch"
500)
501(assert_invalid
502 (module (func $type-true-i64 (block (i64.ctz (br_if 0 (i64.const 1))))))
503 "type mismatch"
504)
505(assert_invalid
506 (module (func $type-true-f32 (block (f32.neg (br_if 0 (f32.const 1))))))
507 "type mismatch"
508)
509(assert_invalid
510 (module (func $type-true-f64 (block (f64.neg (br_if 0 (i64.const 1))))))
511 "type mismatch"
512)
513
514(assert_invalid
515 (module (func $type-false-arg-void-vs-num (result i32)
516 (block (result i32) (br_if 0 (i32.const 0)) (i32.const 1))
517 ))
518 "type mismatch"
519)
520(assert_invalid
521 (module (func $type-true-arg-void-vs-num (result i32)
522 (block (result i32) (br_if 0 (i32.const 1)) (i32.const 1))
523 ))
524 "type mismatch"
525)
526(assert_invalid
527 (module (func $type-false-arg-num-vs-void
528 (block (br_if 0 (i32.const 0) (i32.const 0)))
529 ))
530 "type mismatch"
531)
532(assert_invalid
533 (module (func $type-true-arg-num-vs-void
534 (block (br_if 0 (i32.const 0) (i32.const 1)))
535 ))
536 "type mismatch"
537)
538
539(assert_invalid
540 (module (func $type-false-arg-void-vs-num (result i32)
541 (block (result i32) (br_if 0 (nop) (i32.const 0)) (i32.const 1))
542 ))
543 "type mismatch"
544)
545(assert_invalid
546 (module (func $type-true-arg-void-vs-num (result i32)
547 (block (result i32) (br_if 0 (nop) (i32.const 1)) (i32.const 1))
548 ))
549 "type mismatch"
550)
551(assert_invalid
552 (module (func $type-false-arg-num-vs-num (result i32)
553 (block (result i32)
554 (drop (br_if 0 (i64.const 1) (i32.const 0))) (i32.const 1)
555 )
556 ))
557 "type mismatch"
558)
559(assert_invalid
560 (module (func $type-true-arg-num-vs-num (result i32)
561 (block (result i32)
562 (drop (br_if 0 (i64.const 1) (i32.const 0))) (i32.const 1)
563 )
564 ))
565 "type mismatch"
566)
567
568(assert_invalid
569 (module (func $type-cond-empty-vs-i32
570 (block (br_if 0))
571 ))
572 "type mismatch"
573)
574(assert_invalid
575 (module (func $type-cond-void-vs-i32
576 (block (br_if 0 (nop)))
577 ))
578 "type mismatch"
579)
580(assert_invalid
581 (module (func $type-cond-num-vs-i32
582 (block (br_if 0 (i64.const 0)))
583 ))
584 "type mismatch"
585)
586(assert_invalid
587 (module (func $type-arg-cond-void-vs-i32 (result i32)
588 (block (result i32) (br_if 0 (i32.const 0) (nop)) (i32.const 1))
589 ))
590 "type mismatch"
591)
592(assert_invalid
593 (module (func $type-arg-void-vs-num-nested (result i32)
594 (block (result i32) (i32.const 0) (block (br_if 1 (i32.const 1))))
595 ))
596 "type mismatch"
597)
598(assert_invalid
599 (module (func $type-arg-cond-num-vs-i32 (result i32)
600 (block (result i32) (br_if 0 (i32.const 0) (i64.const 0)) (i32.const 1))
601 ))
602 "type mismatch"
603)
604
605(assert_invalid
606 (module
607 (func $type-1st-cond-empty-in-then
608 (block
609 (i32.const 0) (i32.const 0)
610 (if (result i32) (then (br_if 0)))
611 )
612 (i32.eqz) (drop)
613 )
614 )
615 "type mismatch"
616)
617(assert_invalid
618 (module
619 (func $type-2nd-cond-empty-in-then
620 (block
621 (i32.const 0) (i32.const 0)
622 (if (result i32) (then (br_if 0 (i32.const 1))))
623 )
624 (i32.eqz) (drop)
625 )
626 )
627 "type mismatch"
628)
629(assert_invalid
630 (module
631 (func $type-1st-cond-empty-in-return
632 (block (result i32)
633 (return (br_if 0))
634 )
635 (i32.eqz) (drop)
636 )
637 )
638 "type mismatch"
639)
640(assert_invalid
641 (module
642 (func $type-2nd-cond-empty-in-return
643 (block (result i32)
644 (return (br_if 0 (i32.const 1)))
645 )
646 (i32.eqz) (drop)
647 )
648 )
649 "type mismatch"
650)
651
652
653(assert_invalid
654 (module (func $unbound-label (br_if 1 (i32.const 1))))
655 "unknown label"
656)
657(assert_invalid
658 (module (func $unbound-nested-label (block (block (br_if 5 (i32.const 1))))))
659 "unknown label"
660)
661(assert_invalid
662 (module (func $large-label (br_if 0x10000001 (i32.const 1))))
663 "unknown label"
664)
665
View as plain text