...
1;; Test `block` operator
2
3(module
4 ;; Auxiliary definition
5 (memory 1)
6
7 (func $dummy)
8
9 (func (export "empty")
10 (block)
11 (block $l)
12 )
13
14 (func (export "singular") (result i32)
15 (block (nop))
16 (block (result i32) (i32.const 7))
17 )
18
19 (func (export "multi") (result i32)
20 (block (call $dummy) (call $dummy) (call $dummy) (call $dummy))
21 (block (result i32) (call $dummy) (call $dummy) (call $dummy) (i32.const 8))
22 )
23
24 (func (export "nested") (result i32)
25 (block (result i32)
26 (block (call $dummy) (block) (nop))
27 (block (result i32) (call $dummy) (i32.const 9))
28 )
29 )
30
31 (func (export "deep") (result i32)
32 (block (result i32) (block (result i32)
33 (block (result i32) (block (result i32)
34 (block (result i32) (block (result i32)
35 (block (result i32) (block (result i32)
36 (block (result i32) (block (result i32)
37 (block (result i32) (block (result i32)
38 (block (result i32) (block (result i32)
39 (block (result i32) (block (result i32)
40 (block (result i32) (block (result i32)
41 (block (result i32) (block (result i32)
42 (block (result i32) (block (result i32)
43 (block (result i32) (block (result i32)
44 (block (result i32) (block (result i32)
45 (block (result i32) (block (result i32)
46 (block (result i32) (block (result i32)
47 (block (result i32) (block (result i32)
48 (block (result i32) (block (result i32)
49 (block (result i32) (block (result i32)
50 (block (result i32) (block (result i32)
51 (call $dummy) (i32.const 150)
52 ))
53 ))
54 ))
55 ))
56 ))
57 ))
58 ))
59 ))
60 ))
61 ))
62 ))
63 ))
64 ))
65 ))
66 ))
67 ))
68 ))
69 ))
70 ))
71 )
72
73 (func (export "as-select-first") (result i32)
74 (select (block (result i32) (i32.const 1)) (i32.const 2) (i32.const 3))
75 )
76 (func (export "as-select-mid") (result i32)
77 (select (i32.const 2) (block (result i32) (i32.const 1)) (i32.const 3))
78 )
79 (func (export "as-select-last") (result i32)
80 (select (i32.const 2) (i32.const 3) (block (result i32) (i32.const 1)))
81 )
82
83 (func (export "as-loop-first") (result i32)
84 (loop (result i32) (block (result i32) (i32.const 1)) (call $dummy) (call $dummy))
85 )
86 (func (export "as-loop-mid") (result i32)
87 (loop (result i32) (call $dummy) (block (result i32) (i32.const 1)) (call $dummy))
88 )
89 (func (export "as-loop-last") (result i32)
90 (loop (result i32) (call $dummy) (call $dummy) (block (result i32) (i32.const 1)))
91 )
92
93 (func (export "as-if-condition")
94 (block (result i32) (i32.const 1)) (if (then (call $dummy)))
95 )
96 (func (export "as-if-then") (result i32)
97 (if (result i32) (i32.const 1) (then (block (result i32) (i32.const 1))) (else (i32.const 2)))
98 )
99 (func (export "as-if-else") (result i32)
100 (if (result i32) (i32.const 1) (then (i32.const 2)) (else (block (result i32) (i32.const 1))))
101 )
102
103 (func (export "as-br_if-first") (result i32)
104 (block (result i32) (br_if 0 (block (result i32) (i32.const 1)) (i32.const 2)))
105 )
106 (func (export "as-br_if-last") (result i32)
107 (block (result i32) (br_if 0 (i32.const 2) (block (result i32) (i32.const 1))))
108 )
109
110 (func (export "as-br_table-first") (result i32)
111 (block (result i32) (block (result i32) (i32.const 1)) (i32.const 2) (br_table 0 0))
112 )
113 (func (export "as-br_table-last") (result i32)
114 (block (result i32) (i32.const 2) (block (result i32) (i32.const 1)) (br_table 0 0))
115 )
116
117 (func $func (param i32 i32) (result i32) (local.get 0))
118 (type $check (func (param i32 i32) (result i32)))
119 (table funcref (elem $func))
120 (func (export "as-call_indirect-first") (result i32)
121 (block (result i32)
122 (call_indirect (type $check)
123 (block (result i32) (i32.const 1)) (i32.const 2) (i32.const 0)
124 )
125 )
126 )
127 (func (export "as-call_indirect-mid") (result i32)
128 (block (result i32)
129 (call_indirect (type $check)
130 (i32.const 2) (block (result i32) (i32.const 1)) (i32.const 0)
131 )
132 )
133 )
134 (func (export "as-call_indirect-last") (result i32)
135 (block (result i32)
136 (call_indirect (type $check)
137 (i32.const 1) (i32.const 2) (block (result i32) (i32.const 0))
138 )
139 )
140 )
141
142 (func (export "as-store-first")
143 (block (result i32) (i32.const 1)) (i32.const 1) (i32.store)
144 )
145 (func (export "as-store-last")
146 (i32.const 10) (block (result i32) (i32.const 1)) (i32.store)
147 )
148
149 (func (export "as-memory.grow-value") (result i32)
150 (memory.grow (block (result i32) (i32.const 1)))
151 )
152
153 (func $f (param i32) (result i32) (local.get 0))
154
155 (func (export "as-call-value") (result i32)
156 (call $f (block (result i32) (i32.const 1)))
157 )
158 (func (export "as-return-value") (result i32)
159 (block (result i32) (i32.const 1)) (return)
160 )
161 (func (export "as-drop-operand")
162 (drop (block (result i32) (i32.const 1)))
163 )
164 (func (export "as-br-value") (result i32)
165 (block (result i32) (br 0 (block (result i32) (i32.const 1))))
166 )
167 (func (export "as-local.set-value") (result i32)
168 (local i32) (local.set 0 (block (result i32) (i32.const 1))) (local.get 0)
169 )
170 (func (export "as-local.tee-value") (result i32)
171 (local i32) (local.tee 0 (block (result i32) (i32.const 1)))
172 )
173 (global $a (mut i32) (i32.const 10))
174 (func (export "as-global.set-value") (result i32)
175 (global.set $a (block (result i32) (i32.const 1)))
176 (global.get $a)
177 )
178
179 (func (export "as-load-operand") (result i32)
180 (i32.load (block (result i32) (i32.const 1)))
181 )
182
183 (func (export "as-unary-operand") (result i32)
184 (i32.ctz (block (result i32) (call $dummy) (i32.const 13)))
185 )
186 (func (export "as-binary-operand") (result i32)
187 (i32.mul
188 (block (result i32) (call $dummy) (i32.const 3))
189 (block (result i32) (call $dummy) (i32.const 4))
190 )
191 )
192 (func (export "as-test-operand") (result i32)
193 (i32.eqz (block (result i32) (call $dummy) (i32.const 13)))
194 )
195 (func (export "as-compare-operand") (result i32)
196 (f32.gt
197 (block (result f32) (call $dummy) (f32.const 3))
198 (block (result f32) (call $dummy) (f32.const 3))
199 )
200 )
201
202 (func (export "break-bare") (result i32)
203 (block (br 0) (unreachable))
204 (block (br_if 0 (i32.const 1)) (unreachable))
205 (block (br_table 0 (i32.const 0)) (unreachable))
206 (block (br_table 0 0 0 (i32.const 1)) (unreachable))
207 (i32.const 19)
208 )
209 (func (export "break-value") (result i32)
210 (block (result i32) (br 0 (i32.const 18)) (i32.const 19))
211 )
212 (func (export "break-repeated") (result i32)
213 (block (result i32)
214 (br 0 (i32.const 18))
215 (br 0 (i32.const 19))
216 (drop (br_if 0 (i32.const 20) (i32.const 0)))
217 (drop (br_if 0 (i32.const 20) (i32.const 1)))
218 (br 0 (i32.const 21))
219 (br_table 0 (i32.const 22) (i32.const 4))
220 (br_table 0 0 0 (i32.const 23) (i32.const 1))
221 (i32.const 21)
222 )
223 )
224 (func (export "break-inner") (result i32)
225 (local i32)
226 (local.set 0 (i32.const 0))
227 (local.set 0 (i32.add (local.get 0) (block (result i32) (block (result i32) (br 1 (i32.const 0x1))))))
228 (local.set 0 (i32.add (local.get 0) (block (result i32) (block (br 0)) (i32.const 0x2))))
229 (local.set 0
230 (i32.add (local.get 0) (block (result i32) (i32.ctz (br 0 (i32.const 0x4)))))
231 )
232 (local.set 0
233 (i32.add (local.get 0) (block (result i32) (i32.ctz (block (result i32) (br 1 (i32.const 0x8))))))
234 )
235 (local.get 0)
236 )
237
238 (func (export "effects") (result i32)
239 (local i32)
240 (block
241 (local.set 0 (i32.const 1))
242 (local.set 0 (i32.mul (local.get 0) (i32.const 3)))
243 (local.set 0 (i32.sub (local.get 0) (i32.const 5)))
244 (local.set 0 (i32.mul (local.get 0) (i32.const 7)))
245 (br 0)
246 (local.set 0 (i32.mul (local.get 0) (i32.const 100)))
247 )
248 (i32.eq (local.get 0) (i32.const -14))
249 )
250)
251
252(assert_return (invoke "empty"))
253(assert_return (invoke "singular") (i32.const 7))
254(assert_return (invoke "multi") (i32.const 8))
255(assert_return (invoke "nested") (i32.const 9))
256(assert_return (invoke "deep") (i32.const 150))
257
258(assert_return (invoke "as-select-first") (i32.const 1))
259(assert_return (invoke "as-select-mid") (i32.const 2))
260(assert_return (invoke "as-select-last") (i32.const 2))
261
262(assert_return (invoke "as-loop-first") (i32.const 1))
263(assert_return (invoke "as-loop-mid") (i32.const 1))
264(assert_return (invoke "as-loop-last") (i32.const 1))
265
266(assert_return (invoke "as-if-condition"))
267(assert_return (invoke "as-if-then") (i32.const 1))
268(assert_return (invoke "as-if-else") (i32.const 2))
269
270(assert_return (invoke "as-br_if-first") (i32.const 1))
271(assert_return (invoke "as-br_if-last") (i32.const 2))
272
273(assert_return (invoke "as-br_table-first") (i32.const 1))
274(assert_return (invoke "as-br_table-last") (i32.const 2))
275
276(assert_return (invoke "as-call_indirect-first") (i32.const 1))
277(assert_return (invoke "as-call_indirect-mid") (i32.const 2))
278(assert_return (invoke "as-call_indirect-last") (i32.const 1))
279
280(assert_return (invoke "as-store-first"))
281(assert_return (invoke "as-store-last"))
282
283(assert_return (invoke "as-memory.grow-value") (i32.const 1))
284(assert_return (invoke "as-call-value") (i32.const 1))
285(assert_return (invoke "as-return-value") (i32.const 1))
286(assert_return (invoke "as-drop-operand"))
287(assert_return (invoke "as-br-value") (i32.const 1))
288(assert_return (invoke "as-local.set-value") (i32.const 1))
289(assert_return (invoke "as-local.tee-value") (i32.const 1))
290(assert_return (invoke "as-global.set-value") (i32.const 1))
291(assert_return (invoke "as-load-operand") (i32.const 1))
292
293(assert_return (invoke "as-unary-operand") (i32.const 0))
294(assert_return (invoke "as-binary-operand") (i32.const 12))
295(assert_return (invoke "as-test-operand") (i32.const 0))
296(assert_return (invoke "as-compare-operand") (i32.const 0))
297
298(assert_return (invoke "break-bare") (i32.const 19))
299(assert_return (invoke "break-value") (i32.const 18))
300(assert_return (invoke "break-repeated") (i32.const 18))
301(assert_return (invoke "break-inner") (i32.const 0xf))
302
303(assert_return (invoke "effects") (i32.const 1))
304
305(assert_invalid
306 (module (func $type-empty-i32 (result i32) (block)))
307 "type mismatch"
308)
309(assert_invalid
310 (module (func $type-empty-i64 (result i64) (block)))
311 "type mismatch"
312)
313(assert_invalid
314 (module (func $type-empty-f32 (result f32) (block)))
315 "type mismatch"
316)
317(assert_invalid
318 (module (func $type-empty-f64 (result f64) (block)))
319 "type mismatch"
320)
321
322(assert_invalid
323 (module (func $type-value-i32-vs-void
324 (block (i32.const 1))
325 ))
326 "type mismatch"
327)
328(assert_invalid
329 (module (func $type-value-i64-vs-void
330 (block (i64.const 1))
331 ))
332 "type mismatch"
333)
334(assert_invalid
335 (module (func $type-value-f32-vs-void
336 (block (f32.const 1.0))
337 ))
338 "type mismatch"
339)
340(assert_invalid
341 (module (func $type-value-f64-vs-void
342 (block (f64.const 1.0))
343 ))
344 "type mismatch"
345)
346
347(assert_invalid
348 (module (func $type-value-empty-vs-i32 (result i32)
349 (block (result i32))
350 ))
351 "type mismatch"
352)
353(assert_invalid
354 (module (func $type-value-empty-vs-i64 (result i64)
355 (block (result i64))
356 ))
357 "type mismatch"
358)
359(assert_invalid
360 (module (func $type-value-empty-vs-f32 (result f32)
361 (block (result f32))
362 ))
363 "type mismatch"
364)
365(assert_invalid
366 (module (func $type-value-empty-vs-f64 (result f64)
367 (block (result f64))
368 ))
369 "type mismatch"
370)
371
372(assert_invalid
373 (module
374 (func $type-value-empty-in-block
375 (i32.const 0)
376 (block (block (result i32)) (drop))
377 )
378 )
379 "type mismatch"
380)
381(assert_invalid
382 (module
383 (func $type-value-empty-in-loop
384 (i32.const 0)
385 (loop (block (result i32)) (drop))
386 )
387 )
388 "type mismatch"
389)
390(assert_invalid
391 (module
392 (func $type-value-empty-in-then
393 (i32.const 0) (i32.const 0)
394 (if (then (block (result i32)) (drop)))
395 )
396 )
397 "type mismatch"
398)
399
400(assert_invalid
401 (module (func $type-value-void-vs-i32 (result i32)
402 (block (result i32) (nop))
403 ))
404 "type mismatch"
405)
406(assert_invalid
407 (module (func $type-value-void-vs-i64 (result i64)
408 (block (result i64) (nop))
409 ))
410 "type mismatch"
411)
412(assert_invalid
413 (module (func $type-value-void-vs-f32 (result f32)
414 (block (result f32) (nop))
415 ))
416 "type mismatch"
417)
418(assert_invalid
419 (module (func $type-value-void-vs-f64 (result f64)
420 (block (result f64) (nop))
421 ))
422 "type mismatch"
423)
424
425(assert_invalid
426 (module (func $type-value-i32-vs-i64 (result i32)
427 (block (result i32) (i64.const 0))
428 ))
429 "type mismatch"
430)
431(assert_invalid
432 (module (func $type-value-i32-vs-f32 (result i32)
433 (block (result i32) (f32.const 0.0))
434 ))
435 "type mismatch"
436)
437(assert_invalid
438 (module (func $type-value-i32-vs-f64 (result i32)
439 (block (result i32) (f64.const 0.0))
440 ))
441 "type mismatch"
442)
443(assert_invalid
444 (module (func $type-value-i64-vs-i32 (result i64)
445 (block (result i64) (i32.const 0))
446 ))
447 "type mismatch"
448)
449(assert_invalid
450 (module (func $type-value-i64-vs-f32 (result i64)
451 (block (result i64) (f32.const 0.0))
452 ))
453 "type mismatch"
454)
455(assert_invalid
456 (module (func $type-value-i64-vs-f64 (result i64)
457 (block (result i64) (f64.const 0.0))
458 ))
459 "type mismatch"
460)
461(assert_invalid
462 (module (func $type-value-f32-vs-i32 (result f32)
463 (block (result f32) (i32.const 0))
464 ))
465 "type mismatch"
466)
467(assert_invalid
468 (module (func $type-value-f32-vs-i64 (result f32)
469 (block (result f32) (i64.const 0))
470 ))
471 "type mismatch"
472)
473(assert_invalid
474 (module (func $type-value-f32-vs-f64 (result f32)
475 (block (result f32) (f64.const 0.0))
476 ))
477 "type mismatch"
478)
479(assert_invalid
480 (module (func $type-value-f64-vs-i32 (result f64)
481 (block (result f64) (i32.const 0))
482 ))
483 "type mismatch"
484)
485(assert_invalid
486 (module (func $type-value-f64-vs-i64 (result f64)
487 (block (result f64) (i64.const 0))
488 ))
489 "type mismatch"
490)
491(assert_invalid
492 (module (func $type-value-f64-vs-f32 (result f32)
493 (block (result f64) (f32.const 0.0))
494 ))
495 "type mismatch"
496)
497
498(assert_invalid
499 (module (func $type-value-unreached-select-i32-i64 (result i32)
500 (block (result i64) (select (unreachable) (unreachable) (unreachable)))
501 ))
502 "type mismatch"
503)
504(assert_invalid
505 (module (func $type-value-unreached-select-i32-f32 (result i32)
506 (block (result f32) (select (unreachable) (unreachable) (unreachable)))
507 ))
508 "type mismatch"
509)
510(assert_invalid
511 (module (func $type-value-unreached-select-i32-f64 (result i32)
512 (block (result f64) (select (unreachable) (unreachable) (unreachable)))
513 ))
514 "type mismatch"
515)
516(assert_invalid
517 (module (func $type-value-unreached-select-i64-i32 (result i64)
518 (block (result i32) (select (unreachable) (unreachable) (unreachable)))
519 ))
520 "type mismatch"
521)
522(assert_invalid
523 (module (func $type-value-unreached-select-i64-f32 (result i64)
524 (block (result f32) (select (unreachable) (unreachable) (unreachable)))
525 ))
526 "type mismatch"
527)
528(assert_invalid
529 (module (func $type-value-unreached-select-i64-f64 (result i64)
530 (block (result f64) (select (unreachable) (unreachable) (unreachable)))
531 ))
532 "type mismatch"
533)
534(assert_invalid
535 (module (func $type-value-unreached-select-f32-i32 (result f32)
536 (block (result i32) (select (unreachable) (unreachable) (unreachable)))
537 ))
538 "type mismatch"
539)
540(assert_invalid
541 (module (func $type-value-unreached-select-f32-i64 (result f32)
542 (block (result i64) (select (unreachable) (unreachable) (unreachable)))
543 ))
544 "type mismatch"
545)
546(assert_invalid
547 (module (func $type-value-unreached-select-f32-f64 (result f32)
548 (block (result f64) (select (unreachable) (unreachable) (unreachable)))
549 ))
550 "type mismatch"
551)
552(assert_invalid
553 (module (func $type-value-unreached-select-f64-i32 (result f64)
554 (block (result i32) (select (unreachable) (unreachable) (unreachable)))
555 ))
556 "type mismatch"
557)
558(assert_invalid
559 (module (func $type-value-unreached-select-f64-i64 (result f64)
560 (block (result i64) (select (unreachable) (unreachable) (unreachable)))
561 ))
562 "type mismatch"
563)
564(assert_invalid
565 (module (func $type-value-unreached-select-f64-f32 (result f64)
566 (block (result f32) (select (unreachable) (unreachable) (unreachable)))
567 ))
568 "type mismatch"
569)
570
571(assert_invalid
572 (module (func $type-break-last-void-vs-i32 (result i32)
573 (block (result i32) (br 0))
574 ))
575 "type mismatch"
576)
577(assert_invalid
578 (module (func $type-break-last-void-vs-i64 (result i64)
579 (block (result i64) (br 0))
580 ))
581 "type mismatch"
582)
583(assert_invalid
584 (module (func $type-break-last-void-vs-f32 (result f32)
585 (block (result f32) (br 0))
586 ))
587 "type mismatch"
588)
589(assert_invalid
590 (module (func $type-break-last-void-vs-f64 (result f64)
591 (block (result f64) (br 0))
592 ))
593 "type mismatch"
594)
595
596(assert_invalid
597 (module (func $type-break-empty-vs-i32 (result i32)
598 (block (result i32) (br 0) (i32.const 1))
599 ))
600 "type mismatch"
601)
602(assert_invalid
603 (module (func $type-break-empty-vs-i64 (result i64)
604 (block (result i64) (br 0) (i64.const 1))
605 ))
606 "type mismatch"
607)
608(assert_invalid
609 (module (func $type-break-empty-vs-f32 (result f32)
610 (block (result f32) (br 0) (f32.const 1.0))
611 ))
612 "type mismatch"
613)
614(assert_invalid
615 (module (func $type-break-empty-vs-f64 (result f64)
616 (block (result f64) (br 0) (f64.const 1.0))
617 ))
618 "type mismatch"
619)
620
621(assert_invalid
622 (module (func $type-break-void-vs-i32 (result i32)
623 (block (result i32) (br 0 (nop)) (i32.const 1))
624 ))
625 "type mismatch"
626)
627(assert_invalid
628 (module (func $type-break-void-vs-i64 (result i64)
629 (block (result i64) (br 0 (nop)) (i64.const 1))
630 ))
631 "type mismatch"
632)
633(assert_invalid
634 (module (func $type-break-void-vs-f32 (result f32)
635 (block (result f32) (br 0 (nop)) (f32.const 1.0))
636 ))
637 "type mismatch"
638)
639(assert_invalid
640 (module (func $type-break-void-vs-f64 (result f64)
641 (block (result f64) (br 0 (nop)) (f64.const 1.0))
642 ))
643 "type mismatch"
644)
645
646(assert_invalid
647 (module (func $type-break-i32-vs-i64 (result i32)
648 (block (result i32) (br 0 (i64.const 1)) (i32.const 1))
649 ))
650 "type mismatch"
651)
652(assert_invalid
653 (module (func $type-break-i32-vs-f32 (result i32)
654 (block (result i32) (br 0 (f32.const 1.0)) (i32.const 1))
655 ))
656 "type mismatch"
657)
658(assert_invalid
659 (module (func $type-break-i32-vs-f64 (result i32)
660 (block (result i32) (br 0 (f64.const 1.0)) (i32.const 1))
661 ))
662 "type mismatch"
663)
664(assert_invalid
665 (module (func $type-break-i64-vs-i32 (result i64)
666 (block (result i64) (br 0 (i32.const 1)) (i64.const 1))
667 ))
668 "type mismatch"
669)
670(assert_invalid
671 (module (func $type-break-i64-vs-f32 (result i64)
672 (block (result i64) (br 0 (f32.const 1.0)) (i64.const 1))
673 ))
674 "type mismatch"
675)
676(assert_invalid
677 (module (func $type-break-i64-vs-f64 (result i64)
678 (block (result i64) (br 0 (f64.const 1.0)) (i64.const 1))
679 ))
680 "type mismatch"
681)
682(assert_invalid
683 (module (func $type-break-f32-vs-i32 (result f32)
684 (block (result f32) (br 0 (i32.const 1)) (f32.const 1.0))
685 ))
686 "type mismatch"
687)
688(assert_invalid
689 (module (func $type-break-f32-vs-i64 (result f32)
690 (block (result f32) (br 0 (i64.const 1)) (f32.const 1.0))
691 ))
692 "type mismatch"
693)
694(assert_invalid
695 (module (func $type-break-f32-vs-f64 (result f32)
696 (block (result f32) (br 0 (f64.const 1.0)) (f32.const 1.0))
697 ))
698 "type mismatch"
699)
700(assert_invalid
701 (module (func $type-break-f64-vs-i32 (result f64)
702 (block (result i64) (br 0 (i32.const 1)) (f64.const 1.0))
703 ))
704 "type mismatch"
705)
706(assert_invalid
707 (module (func $type-break-f64-vs-i64 (result f64)
708 (block (result f64) (br 0 (i64.const 1)) (f64.const 1.0))
709 ))
710 "type mismatch"
711)
712(assert_invalid
713 (module (func $type-break-f64-vs-f32 (result f64)
714 (block (result f64) (br 0 (f32.const 1.0)) (f64.const 1))
715 ))
716 "type mismatch"
717)
718
719(assert_invalid
720 (module (func $type-break-first-void-vs-i32 (result i32)
721 (block (result i32) (br 0 (nop)) (br 0 (i32.const 1)))
722 ))
723 "type mismatch"
724)
725(assert_invalid
726 (module (func $type-break-first-void-vs-i64 (result i64)
727 (block (result i64) (br 0 (nop)) (br 0 (i64.const 1)))
728 ))
729 "type mismatch"
730)
731(assert_invalid
732 (module (func $type-break-first-void-vs-f32 (result f32)
733 (block (result f32) (br 0 (nop)) (br 0 (f32.const 1.0)))
734 ))
735 "type mismatch"
736)
737(assert_invalid
738 (module (func $type-break-first-void-vs-f64 (result f64)
739 (block (result f64) (br 0 (nop)) (br 0 (f64.const 1.0)))
740 ))
741 "type mismatch"
742)
743
744(assert_invalid
745 (module (func $type-break-first-i32-vs-i64 (result i32)
746 (block (result i32) (br 0 (i64.const 1)) (br 0 (i32.const 1)))
747 ))
748 "type mismatch"
749)
750(assert_invalid
751 (module (func $type-break-first-i32-vs-f32 (result i32)
752 (block (result i32) (br 0 (f32.const 1.0)) (br 0 (i32.const 1)))
753 ))
754 "type mismatch"
755)
756(assert_invalid
757 (module (func $type-break-first-i32-vs-f64 (result i32)
758 (block (result i32) (br 0 (f64.const 1.0)) (br 0 (i32.const 1)))
759 ))
760 "type mismatch"
761)
762(assert_invalid
763 (module (func $type-break-first-i64-vs-i32 (result i64)
764 (block (result i64) (br 0 (i32.const 1)) (br 0 (i64.const 1)))
765 ))
766 "type mismatch"
767)
768(assert_invalid
769 (module (func $type-break-first-i64-vs-f32 (result i64)
770 (block (result i64) (br 0 (f32.const 1.0)) (br 0 (i64.const 1)))
771 ))
772 "type mismatch"
773)
774(assert_invalid
775 (module (func $type-break-first-i64-vs-f64 (result i64)
776 (block (result i64) (br 0 (f64.const 1.0)) (br 0 (i64.const 1)))
777 ))
778 "type mismatch"
779)
780(assert_invalid
781 (module (func $type-break-first-f32-vs-i32 (result f32)
782 (block (result f32) (br 0 (i32.const 1)) (br 0 (f32.const 1.0)))
783 ))
784 "type mismatch"
785)
786(assert_invalid
787 (module (func $type-break-first-f32-vs-i64 (result f32)
788 (block (result f32) (br 0 (i64.const 1)) (br 0 (f32.const 1.0)))
789 ))
790 "type mismatch"
791)
792(assert_invalid
793 (module (func $type-break-first-f32-vs-f64 (result f32)
794 (block (result f32) (br 0 (f64.const 1.0)) (br 0 (f32.const 1.0)))
795 ))
796 "type mismatch"
797)
798(assert_invalid
799 (module (func $type-break-first-f64-vs-i32 (result f64)
800 (block (result f64) (br 0 (i32.const 1)) (br 0 (f64.const 1.0)))
801 ))
802 "type mismatch"
803)
804(assert_invalid
805 (module (func $type-break-first-f64-vs-i64 (result f64)
806 (block (result f64) (br 0 (i64.const 1)) (br 0 (f64.const 1.0)))
807 ))
808 "type mismatch"
809)
810(assert_invalid
811 (module (func $type-break-first-f64-vs-f32 (result f64)
812 (block (result f64) (br 0 (f32.const 1.0)) (br 0 (f64.const 1.0)))
813 ))
814 "type mismatch"
815)
816
817(assert_invalid
818 (module (func $type-break-nested-i32-vs-void
819 (block (result i32) (block (result i32) (br 1 (i32.const 1))) (br 0))
820 ))
821 "type mismatch"
822)
823(assert_invalid
824 (module (func $type-break-nested-i64-vs-void
825 (block (result i64) (block (result i64) (br 1 (i64.const 1))) (br 0))
826 ))
827 "type mismatch"
828)
829(assert_invalid
830 (module (func $type-break-nested-f32-vs-void
831 (block (result f32) (block (result f32) (br 1 (f32.const 1.0))) (br 0))
832 ))
833 "type mismatch"
834)
835(assert_invalid
836 (module (func $type-break-nested-f64-vs-void
837 (block (result f64) (block (result f64) (br 1 (f64.const 1.0))) (br 0))
838 ))
839 "type mismatch"
840)
841
842(assert_invalid
843 (module (func $type-break-nested-empty-vs-i32 (result i32)
844 (block (result i32) (block (br 1)) (br 0 (i32.const 1)))
845 ))
846 "type mismatch"
847)
848(assert_invalid
849 (module (func $type-break-nested-empty-vs-i64 (result i64)
850 (block (result i64) (block (br 1)) (br 0 (i64.const 1)))
851 ))
852 "type mismatch"
853)
854(assert_invalid
855 (module (func $type-break-nested-empty-vs-f32 (result f32)
856 (block (result f32) (block (br 1)) (br 0 (f32.const 1.0)))
857 ))
858 "type mismatch"
859)
860(assert_invalid
861 (module (func $type-break-nested-empty-vs-f64 (result f64)
862 (block (result f64) (block (br 1)) (br 0 (f64.const 1)))
863 ))
864 "type mismatch"
865)
866
867(assert_invalid
868 (module (func $type-break-nested-void-vs-i32 (result i32)
869 (block (result i32) (block (result i32) (br 1 (nop))) (br 0 (i32.const 1)))
870 ))
871 "type mismatch"
872)
873(assert_invalid
874 (module (func $type-break-nested-void-vs-i64 (result i64)
875 (block (result i64) (block (result i64) (br 1 (nop))) (br 0 (i64.const 1)))
876 ))
877 "type mismatch"
878)
879(assert_invalid
880 (module (func $type-break-nested-void-vs-f32 (result f32)
881 (block (result f32) (block (result f32) (br 1 (nop))) (br 0 (f32.const 1.0)))
882 ))
883 "type mismatch"
884)
885(assert_invalid
886 (module (func $type-break-nested-void-vs-f64 (result f64)
887 (block (result f64) (block (result f64) (br 1 (nop))) (br 0 (f64.const 1.0)))
888 ))
889 "type mismatch"
890)
891
892(assert_invalid
893 (module (func $type-break-nested-i32-vs-i64 (result i32)
894 (block (result i32)
895 (block (result i32) (br 1 (i64.const 1))) (br 0 (i32.const 1))
896 )
897 ))
898 "type mismatch"
899)
900(assert_invalid
901 (module (func $type-break-nested-i32-vs-f32 (result i32)
902 (block (result i32)
903 (block (result i32) (br 1 (f32.const 1.0))) (br 0 (i32.const 1))
904 )
905 ))
906 "type mismatch"
907)
908(assert_invalid
909 (module (func $type-break-nested-i32-vs-f64 (result i32)
910 (block (result i32)
911 (block (result i32) (br 1 (f64.const 1.0))) (br 0 (i32.const 1))
912 )
913 ))
914 "type mismatch"
915)
916(assert_invalid
917 (module (func $type-break-nested-i64-vs-i32 (result i64)
918 (block (result i64)
919 (block (result i64) (br 1 (i32.const 1))) (br 0 (i64.const 1))
920 )
921 ))
922 "type mismatch"
923)
924(assert_invalid
925 (module (func $type-break-nested-i64-vs-f32 (result i64)
926 (block (result i64)
927 (block (result i64) (br 1 (f32.const 1.0))) (br 0 (i64.const 1))
928 )
929 ))
930 "type mismatch"
931)
932(assert_invalid
933 (module (func $type-break-nested-i64-vs-f64 (result i64)
934 (block (result i64)
935 (block (result i64) (br 1 (f64.const 1.0))) (br 0 (i64.const 1))
936 )
937 ))
938 "type mismatch"
939)
940(assert_invalid
941 (module (func $type-break-nested-f32-vs-i32 (result f32)
942 (block (result f32)
943 (block (result f32) (br 1 (i32.const 1))) (br 0 (f32.const 1.0))
944 )
945 ))
946 "type mismatch"
947)
948(assert_invalid
949 (module (func $type-break-nested-f32-vs-i64 (result f32)
950 (block (result f32)
951 (block (result f32) (br 1 (i64.const 1))) (br 0 (f32.const 1.0))
952 )
953 ))
954 "type mismatch"
955)
956(assert_invalid
957 (module (func $type-break-nested-f32-vs-f64 (result f32)
958 (block (result f32)
959 (block (result f32) (br 1 (f64.const 1.0))) (br 0 (f32.const 1.0))
960 )
961 ))
962 "type mismatch"
963)
964(assert_invalid
965 (module (func $type-break-nested-f64-vs-i32 (result f64)
966 (block (result f64)
967 (block (result f64) (br 1 (i32.const 1))) (br 0 (f64.const 1.0))
968 )
969 ))
970 "type mismatch"
971)
972(assert_invalid
973 (module (func $type-break-nested-f64-vs-i64 (result f64)
974 (block (result f64)
975 (block (result f64) (br 1 (i64.const 1))) (br 0 (f64.const 1.0))
976 )
977 ))
978 "type mismatch"
979)
980(assert_invalid
981 (module (func $type-break-nested-f64-vs-f32 (result f64)
982 (block (result f64)
983 (block (result f64) (br 1 (f32.const 1.0))) (br 0 (f64.const 1.0))
984 )
985 ))
986 "type mismatch"
987)
988
989(assert_invalid
990 (module (func $type-break-operand-empty-vs-i32 (result i32)
991 (i32.ctz (block (br 0)))
992 ))
993 "type mismatch"
994)
995(assert_invalid
996 (module (func $type-break-operand-empty-vs-i64 (result i64)
997 (i64.ctz (block (br 0)))
998 ))
999 "type mismatch"
1000)
1001(assert_invalid
1002 (module (func $type-break-operand-empty-vs-f32 (result f32)
1003 (f32.floor (block (br 0)))
1004 ))
1005 "type mismatch"
1006)
1007(assert_invalid
1008 (module (func $type-break-operand-empty-vs-f64 (result f64)
1009 (f64.floor (block (br 0)))
1010 ))
1011 "type mismatch"
1012)
1013
1014(assert_invalid
1015 (module (func $type-break-operand-void-vs-i32 (result i32)
1016 (i32.ctz (block (br 0 (nop))))
1017 ))
1018 "type mismatch"
1019)
1020(assert_invalid
1021 (module (func $type-break-operand-void-vs-i64 (result i64)
1022 (i64.ctz (block (br 0 (nop))))
1023 ))
1024 "type mismatch"
1025)
1026(assert_invalid
1027 (module (func $type-break-operand-void-vs-f32 (result f32)
1028 (f32.floor (block (br 0 (nop))))
1029 ))
1030 "type mismatch"
1031)
1032(assert_invalid
1033 (module (func $type-break-operand-void-vs-f64 (result f64)
1034 (f64.floor (block (br 0 (nop))))
1035 ))
1036 "type mismatch"
1037)
1038
1039(assert_invalid
1040 (module (func $type-break-operand-i32-vs-i64 (result i32)
1041 (i64.ctz (block (br 0 (i64.const 9))))
1042 ))
1043 "type mismatch"
1044)
1045(assert_invalid
1046 (module (func $type-break-operand-i32-vs-f32 (result i32)
1047 (f32.floor (block (br 0 (f32.const 9.0))))
1048 ))
1049 "type mismatch"
1050)
1051(assert_invalid
1052 (module (func $type-break-operand-i32-vs-f64 (result i32)
1053 (f64.floor (block (br 0 (f64.const 9.0))))
1054 ))
1055 "type mismatch"
1056)
1057(assert_invalid
1058 (module (func $type-break-operand-i64-vs-i32 (result i64)
1059 (i32.ctz (block (br 0 (i32.const 9))))
1060 ))
1061 "type mismatch"
1062)
1063(assert_invalid
1064 (module (func $type-break-operand-i64-vs-f32 (result i64)
1065 (f32.floor (block (br 0 (f32.const 9.0))))
1066 ))
1067 "type mismatch"
1068)
1069(assert_invalid
1070 (module (func $type-break-operand-i64-vs-f64 (result i64)
1071 (f64.floor (block (br 0 (f64.const 9.0))))
1072 ))
1073 "type mismatch"
1074)
1075(assert_invalid
1076 (module (func $type-break-operand-f32-vs-i32 (result f32)
1077 (i32.ctz (block (br 0 (i32.const 9))))
1078 ))
1079 "type mismatch"
1080)
1081(assert_invalid
1082 (module (func $type-break-operand-f32-vs-i64 (result f32)
1083 (i64.ctz (block (br 0 (i64.const 9))))
1084 ))
1085 "type mismatch"
1086)
1087(assert_invalid
1088 (module (func $type-break-operand-f32-vs-f64 (result f32)
1089 (f64.floor (block (br 0 (f64.const 9.0))))
1090 ))
1091 "type mismatch"
1092)
1093(assert_invalid
1094 (module (func $type-break-operand-f64-vs-i32 (result f64)
1095 (i32.ctz (block (br 0 (i32.const 9))))
1096 ))
1097 "type mismatch"
1098)
1099(assert_invalid
1100 (module (func $type-break-operand-f64-vs-i64 (result f64)
1101 (i64.ctz (block (br 0 (i64.const 9))))
1102 ))
1103 "type mismatch"
1104)
1105(assert_invalid
1106 (module (func $type-break-operand-f64-vs-f32 (result f64)
1107 (f32.floor (block (br 0 (f32.const 9.0))))
1108 ))
1109 "type mismatch"
1110)
1111
1112
1113(assert_malformed
1114 (module quote "(func block end $l)")
1115 "mismatching label"
1116)
1117(assert_malformed
1118 (module quote "(func block $a end $l)")
1119 "mismatching label"
1120)
View as plain text