/* Copyright 2021 Mozilla Foundation
*
* Licensed under the Apache License , Version 2 . 0 ( the " License " ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* http : //www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an " AS IS " BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
*/
// ./test/core/if.wast
// ./test/core/if.wast:3
let $0 = instantiate(`(module
;; Auxiliary definition
(memory 1 )
(func $$dummy)
(func (export "empty" ) (param i32)
(if (local.get 0 ) (then))
(if (local.get 0 ) (then) (else ))
(if $$l (local.get 0 ) (then))
(if $$l (local.get 0 ) (then) (else ))
)
(func (export "singular" ) (param i32) (result i32)
(if (local.get 0 ) (then (nop)))
(if (local.get 0 ) (then (nop)) (else (nop)))
(if (result i32) (local.get 0 ) (then (i32.const 7 )) (else (i32.const 8 )))
)
(func (export "multi" ) (param i32) (result i32 i32)
(if (local.get 0 ) (then (call $$dummy) (call $$dummy) (call $$dummy)))
(if (local.get 0 ) (then) (else (call $$dummy) (call $$dummy) (call $$dummy)))
(if (result i32) (local.get 0 )
(then (call $$dummy) (call $$dummy) (i32.const 8 ) (call $$dummy))
(else (call $$dummy) (call $$dummy) (i32.const 9 ) (call $$dummy))
)
(if (result i32 i64 i32) (local.get 0 )
(then
(call $$dummy) (call $$dummy) (i32.const 1 ) (call $$dummy)
(call $$dummy) (call $$dummy) (i64.const 2 ) (call $$dummy)
(call $$dummy) (call $$dummy) (i32.const 3 ) (call $$dummy)
)
(else
(call $$dummy) (call $$dummy) (i32.const -1 ) (call $$dummy)
(call $$dummy) (call $$dummy) (i64.const -2 ) (call $$dummy)
(call $$dummy) (call $$dummy) (i32.const -3 ) (call $$dummy)
)
)
(drop) (drop)
)
(func (export "nested" ) (param i32 i32) (result i32)
(if (result i32) (local.get 0 )
(then
(if (local.get 1 ) (then (call $$dummy) (block) (nop)))
(if (local.get 1 ) (then) (else (call $$dummy) (block) (nop)))
(if (result i32) (local.get 1 )
(then (call $$dummy) (i32.const 9 ))
(else (call $$dummy) (i32.const 10 ))
)
)
(else
(if (local.get 1 ) (then (call $$dummy) (block) (nop)))
(if (local.get 1 ) (then) (else (call $$dummy) (block) (nop)))
(if (result i32) (local.get 1 )
(then (call $$dummy) (i32.const 10 ))
(else (call $$dummy) (i32.const 11 ))
)
)
)
)
(func (export "as-select-first" ) (param i32) (result i32)
(select
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(i32.const 2 ) (i32.const 3 )
)
)
(func (export "as-select-mid" ) (param i32) (result i32)
(select
(i32.const 2 )
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(i32.const 3 )
)
)
(func (export "as-select-last" ) (param i32) (result i32)
(select
(i32.const 2 ) (i32.const 3 )
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
)
)
(func (export "as-loop-first" ) (param i32) (result i32)
(loop (result i32)
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(call $$dummy) (call $$dummy)
)
)
(func (export "as-loop-mid" ) (param i32) (result i32)
(loop (result i32)
(call $$dummy)
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(call $$dummy)
)
)
(func (export "as-loop-last" ) (param i32) (result i32)
(loop (result i32)
(call $$dummy) (call $$dummy)
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
)
)
(func (export "as-if-condition" ) (param i32) (result i32)
(if (result i32)
(if (result i32) (local.get 0 )
(then (i32.const 1 )) (else (i32.const 0 ))
)
(then (call $$dummy) (i32.const 2 ))
(else (call $$dummy) (i32.const 3 ))
)
)
(func (export "as-br_if-first" ) (param i32) (result i32)
(block (result i32)
(br_if 0
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(i32.const 2 )
)
(return (i32.const 3 ))
)
)
(func (export "as-br_if-last" ) (param i32) (result i32)
(block (result i32)
(br_if 0
(i32.const 2 )
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
)
(return (i32.const 3 ))
)
)
(func (export "as-br_table-first" ) (param i32) (result i32)
(block (result i32)
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(i32.const 2 )
(br_table 0 0 )
)
)
(func (export "as-br_table-last" ) (param i32) (result i32)
(block (result i32)
(i32.const 2 )
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(br_table 0 0 )
)
)
(func $$func (param i32 i32) (result i32) (local.get 0 ))
(type $$check (func (param i32 i32) (result i32)))
(table funcref (elem $$func))
(func (export "as-call_indirect-first" ) (param i32) (result i32)
(block (result i32)
(call_indirect (type $$check)
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(i32.const 2 ) (i32.const 0 )
)
)
)
(func (export "as-call_indirect-mid" ) (param i32) (result i32)
(block (result i32)
(call_indirect (type $$check)
(i32.const 2 )
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(i32.const 0 )
)
)
)
(func (export "as-call_indirect-last" ) (param i32) (result i32)
(block (result i32)
(call_indirect (type $$check)
(i32.const 2 ) (i32.const 0 )
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
)
)
)
(func (export "as-store-first" ) (param i32)
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(i32.const 2 )
(i32.store)
)
(func (export "as-store-last" ) (param i32)
(i32.const 2 )
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 1 ))
(else (call $$dummy) (i32.const 0 ))
)
(i32.store)
)
(func (export "as-memory.grow-value" ) (param i32) (result i32)
(memory.grow
(if (result i32) (local.get 0 )
(then (i32.const 1 ))
(else (i32.const 0 ))
)
)
)
(func $$f (param i32) (result i32) (local.get 0 ))
(func (export "as-call-value" ) (param i32) (result i32)
(call $$f
(if (result i32) (local.get 0 )
(then (i32.const 1 ))
(else (i32.const 0 ))
)
)
)
(func (export "as-return-value" ) (param i32) (result i32)
(if (result i32) (local.get 0 )
(then (i32.const 1 ))
(else (i32.const 0 )))
(return )
)
(func (export "as-drop-operand" ) (param i32)
(drop
(if (result i32) (local.get 0 )
(then (i32.const 1 ))
(else (i32.const 0 ))
)
)
)
(func (export "as-br-value" ) (param i32) (result i32)
(block (result i32)
(br 0
(if (result i32) (local.get 0 )
(then (i32.const 1 ))
(else (i32.const 0 ))
)
)
)
)
(func (export "as-local.set-value" ) (param i32) (result i32)
(local i32)
(local.set 0
(if (result i32) (local.get 0 )
(then (i32.const 1 ))
(else (i32.const 0 ))
)
)
(local.get 0 )
)
(func (export "as-local.tee-value" ) (param i32) (result i32)
(local.tee 0
(if (result i32) (local.get 0 )
(then (i32.const 1 ))
(else (i32.const 0 ))
)
)
)
(global $$a (mut i32) (i32.const 10 ))
(func (export "as-global.set-value" ) (param i32) (result i32)
(global.set $$a
(if (result i32) (local.get 0 )
(then (i32.const 1 ))
(else (i32.const 0 ))
)
) (global.get $$a)
)
(func (export "as-load-operand" ) (param i32) (result i32)
(i32.load
(if (result i32) (local.get 0 )
(then (i32.const 11 ))
(else (i32.const 10 ))
)
)
)
(func (export "as-unary-operand" ) (param i32) (result i32)
(i32.ctz
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 13 ))
(else (call $$dummy) (i32.const -13 ))
)
)
)
(func (export "as-binary-operand" ) (param i32 i32) (result i32)
(i32.mul
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 3 ))
(else (call $$dummy) (i32.const -3 ))
)
(if (result i32) (local.get 1 )
(then (call $$dummy) (i32.const 4 ))
(else (call $$dummy) (i32.const -5 ))
)
)
)
(func (export "as-test-operand" ) (param i32) (result i32)
(i32.eqz
(if (result i32) (local.get 0 )
(then (call $$dummy) (i32.const 13 ))
(else (call $$dummy) (i32.const 0 ))
)
)
)
(func (export "as-compare-operand" ) (param i32 i32) (result i32)
(f32.gt
(if (result f32) (local.get 0 )
(then (call $$dummy) (f32.const 3 ))
(else (call $$dummy) (f32.const -3 ))
)
(if (result f32) (local.get 1 )
(then (call $$dummy) (f32.const 4 ))
(else (call $$dummy) (f32.const -4 ))
)
)
)
(func (export "as-binary-operands" ) (param i32) (result i32)
(i32.mul
(if (result i32 i32) (local.get 0 )
(then (call $$dummy) (i32.const 3 ) (call $$dummy) (i32.const 4 ))
(else (call $$dummy) (i32.const 3 ) (call $$dummy) (i32.const -4 ))
)
)
)
(func (export "as-compare-operands" ) (param i32) (result i32)
(f32.gt
(if (result f32 f32) (local.get 0 )
(then (call $$dummy) (f32.const 3 ) (call $$dummy) (f32.const 3 ))
(else (call $$dummy) (f32.const -2 ) (call $$dummy) (f32.const -3 ))
)
)
)
(func (export "as-mixed-operands" ) (param i32) (result i32)
(if (result i32 i32) (local.get 0 )
(then (call $$dummy) (i32.const 3 ) (call $$dummy) (i32.const 4 ))
(else (call $$dummy) (i32.const -3 ) (call $$dummy) (i32.const -4 ))
)
(i32.const 5 )
(i32.add)
(i32.mul)
)
(func (export "break-bare" ) (result i32)
(if (i32.const 1 ) (then (br 0 ) (unreachable)))
(if (i32.const 1 ) (then (br 0 ) (unreachable)) (else (unreachable)))
(if (i32.const 0 ) (then (unreachable)) (else (br 0 ) (unreachable)))
(if (i32.const 1 ) (then (br_if 0 (i32.const 1 )) (unreachable)))
(if (i32.const 1 ) (then (br_if 0 (i32.const 1 )) (unreachable)) (else (unreachable)))
(if (i32.const 0 ) (then (unreachable)) (else (br_if 0 (i32.const 1 )) (unreachable)))
(if (i32.const 1 ) (then (br_table 0 (i32.const 0 )) (unreachable)))
(if (i32.const 1 ) (then (br_table 0 (i32.const 0 )) (unreachable)) (else (unreachable)))
(if (i32.const 0 ) (then (unreachable)) (else (br_table 0 (i32.const 0 )) (unreachable)))
(i32.const 19 )
)
(func (export "break-value" ) (param i32) (result i32)
(if (result i32) (local.get 0 )
(then (br 0 (i32.const 18 )) (i32.const 19 ))
(else (br 0 (i32.const 21 )) (i32.const 20 ))
)
)
(func (export "break-multi-value" ) (param i32) (result i32 i32 i64)
(if (result i32 i32 i64) (local.get 0 )
(then
(br 0 (i32.const 18 ) (i32.const -18 ) (i64.const 18 ))
(i32.const 19 ) (i32.const -19 ) (i64.const 19 )
)
(else
(br 0 (i32.const -18 ) (i32.const 18 ) (i64.const -18 ))
(i32.const -19 ) (i32.const 19 ) (i64.const -19 )
)
)
)
(func (export "param" ) (param i32) (result i32)
(i32.const 1 )
(if (param i32) (result i32) (local.get 0 )
(then (i32.const 2 ) (i32.add))
(else (i32.const -2 ) (i32.add))
)
)
(func (export "params" ) (param i32) (result i32)
(i32.const 1 )
(i32.const 2 )
(if (param i32 i32) (result i32) (local.get 0 )
(then (i32.add))
(else (i32.sub))
)
)
(func (export "params-id" ) (param i32) (result i32)
(i32.const 1 )
(i32.const 2 )
(if (param i32 i32) (result i32 i32) (local.get 0 ) (then))
(i32.add)
)
(func (export "param-break" ) (param i32) (result i32)
(i32.const 1 )
(if (param i32) (result i32) (local.get 0 )
(then (i32.const 2 ) (i32.add) (br 0 ))
(else (i32.const -2 ) (i32.add) (br 0 ))
)
)
(func (export "params-break" ) (param i32) (result i32)
(i32.const 1 )
(i32.const 2 )
(if (param i32 i32) (result i32) (local.get 0 )
(then (i32.add) (br 0 ))
(else (i32.sub) (br 0 ))
)
)
(func (export "params-id-break" ) (param i32) (result i32)
(i32.const 1 )
(i32.const 2 )
(if (param i32 i32) (result i32 i32) (local.get 0 ) (then (br 0 )))
(i32.add)
)
(func (export "effects" ) (param i32) (result i32)
(local i32)
(if
(block (result i32) (local.set 1 (i32.const 1 )) (local.get 0 ))
(then
(local.set 1 (i32.mul (local.get 1 ) (i32.const 3 )))
(local.set 1 (i32.sub (local.get 1 ) (i32.const 5 )))
(local.set 1 (i32.mul (local.get 1 ) (i32.const 7 )))
(br 0 )
(local.set 1 (i32.mul (local.get 1 ) (i32.const 100 )))
)
(else
(local.set 1 (i32.mul (local.get 1 ) (i32.const 5 )))
(local.set 1 (i32.sub (local.get 1 ) (i32.const 7 )))
(local.set 1 (i32.mul (local.get 1 ) (i32.const 3 )))
(br 0 )
(local.set 1 (i32.mul (local.get 1 ) (i32.const 1000 )))
)
)
(local.get 1 )
)
;; Examples
(func $$add64_u_with_carry (export "add64_u_with_carry" )
(param $$i i64) (param $$j i64) (param $$c i32) (result i64 i32)
(local $$k i64)
(local.set $$k
(i64.add
(i64.add (local.get $$i) (local.get $$j))
(i64.extend_i32_u (local.get $$c))
)
)
(return (local.get $$k) (i64.lt_u (local.get $$k) (local.get $$i)))
)
(func $$add64_u_saturated (export "add64_u_saturated" )
(param i64 i64) (result i64)
(call $$add64_u_with_carry (local.get 0 ) (local.get 1 ) (i32.const 0 ))
(if (param i64) (result i64)
(then (drop) (i64.const -1 ))
)
)
;; Block signature syntax
(type $$block-sig-1 (func))
(type $$block-sig-2 (func (result i32)))
(type $$block-sig-3 (func (param $$x i32)))
(type $$block-sig-4 (func (param i32 f64 i32) (result i32 f64 i32)))
(func (export "type-use" )
(if (type $$block-sig-1 ) (i32.const 1 ) (then))
(if (type $$block-sig-2 ) (i32.const 1 )
(then (i32.const 0 )) (else (i32.const 2 ))
)
(if (type $$block-sig-3 ) (i32.const 1 ) (then (drop)) (else (drop)))
(i32.const 0 ) (f64.const 0 ) (i32.const 0 )
(if (type $$block-sig-4 ) (i32.const 1 ) (then))
(drop) (drop) (drop)
(if (type $$block-sig-2 ) (result i32) (i32.const 1 )
(then (i32.const 0 )) (else (i32.const 2 ))
)
(if (type $$block-sig-3 ) (param i32) (i32.const 1 )
(then (drop)) (else (drop))
)
(i32.const 0 ) (f64.const 0 ) (i32.const 0 )
(if (type $$block-sig-4 )
(param i32) (param f64 i32) (result i32 f64) (result i32)
(i32.const 1 ) (then)
)
(drop) (drop) (drop)
)
;; Atypical folded condition syntax
(func (export "atypical-condition" )
i32.const 0
(if (then) (else ))
(if (i32.const 1 ) (i32.eqz) (then) (else ))
)
)`);
// ./test/core/if.wast:537
assert_return(() => invoke($0 , `empty`, [0 ]), []);
// ./test/core/if.wast:538
assert_return(() => invoke($0 , `empty`, [1 ]), []);
// ./test/core/if.wast:539
assert_return(() => invoke($0 , `empty`, [100 ]), []);
// ./test/core/if.wast:540
assert_return(() => invoke($0 , `empty`, [-2 ]), []);
// ./test/core/if.wast:542
assert_return(() => invoke($0 , `singular`, [0 ]), [value("i32" , 8 )]);
// ./test/core/if.wast:543
assert_return(() => invoke($0 , `singular`, [1 ]), [value("i32" , 7 )]);
// ./test/core/if.wast:544
assert_return(() => invoke($0 , `singular`, [10 ]), [value("i32" , 7 )]);
// ./test/core/if.wast:545
assert_return(() => invoke($0 , `singular`, [-10 ]), [value("i32" , 7 )]);
// ./test/core/if.wast:547
assert_return(() => invoke($0 , `multi`, [0 ]), [value("i32" , 9 ), value("i32" , -1 )]);
// ./test/core/if.wast:548
assert_return(() => invoke($0 , `multi`, [1 ]), [value("i32" , 8 ), value("i32" , 1 )]);
// ./test/core/if.wast:549
assert_return(() => invoke($0 , `multi`, [13 ]), [value("i32" , 8 ), value("i32" , 1 )]);
// ./test/core/if.wast:550
assert_return(() => invoke($0 , `multi`, [-5 ]), [value("i32" , 8 ), value("i32" , 1 )]);
// ./test/core/if.wast:552
assert_return(() => invoke($0 , `nested`, [0 , 0 ]), [value("i32" , 11 )]);
// ./test/core/if.wast:553
assert_return(() => invoke($0 , `nested`, [1 , 0 ]), [value("i32" , 10 )]);
// ./test/core/if.wast:554
assert_return(() => invoke($0 , `nested`, [0 , 1 ]), [value("i32" , 10 )]);
// ./test/core/if.wast:555
assert_return(() => invoke($0 , `nested`, [3 , 2 ]), [value("i32" , 9 )]);
// ./test/core/if.wast:556
assert_return(() => invoke($0 , `nested`, [0 , -100 ]), [value("i32" , 10 )]);
// ./test/core/if.wast:557
assert_return(() => invoke($0 , `nested`, [10 , 10 ]), [value("i32" , 9 )]);
// ./test/core/if.wast:558
assert_return(() => invoke($0 , `nested`, [0 , -1 ]), [value("i32" , 10 )]);
// ./test/core/if.wast:559
assert_return(() => invoke($0 , `nested`, [-111 , -2 ]), [value("i32" , 9 )]);
// ./test/core/if.wast:561
assert_return(() => invoke($0 , `as-select-first`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:562
assert_return(() => invoke($0 , `as-select-first`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:563
assert_return(() => invoke($0 , `as-select-mid`, [0 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:564
assert_return(() => invoke($0 , `as-select-mid`, [1 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:565
assert_return(() => invoke($0 , `as-select-last`, [0 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:566
assert_return(() => invoke($0 , `as-select-last`, [1 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:568
assert_return(() => invoke($0 , `as-loop-first`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:569
assert_return(() => invoke($0 , `as-loop-first`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:570
assert_return(() => invoke($0 , `as-loop-mid`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:571
assert_return(() => invoke($0 , `as-loop-mid`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:572
assert_return(() => invoke($0 , `as-loop-last`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:573
assert_return(() => invoke($0 , `as-loop-last`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:575
assert_return(() => invoke($0 , `as-if -condition`, [0 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:576
assert_return(() => invoke($0 , `as-if -condition`, [1 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:578
assert_return(() => invoke($0 , `as-br_if-first`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:579
assert_return(() => invoke($0 , `as-br_if-first`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:580
assert_return(() => invoke($0 , `as-br_if-last`, [0 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:581
assert_return(() => invoke($0 , `as-br_if-last`, [1 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:583
assert_return(() => invoke($0 , `as-br_table-first`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:584
assert_return(() => invoke($0 , `as-br_table-first`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:585
assert_return(() => invoke($0 , `as-br_table-last`, [0 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:586
assert_return(() => invoke($0 , `as-br_table-last`, [1 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:588
assert_return(() => invoke($0 , `as-call_indirect-first`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:589
assert_return(() => invoke($0 , `as-call_indirect-first`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:590
assert_return(() => invoke($0 , `as-call_indirect-mid`, [0 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:591
assert_return(() => invoke($0 , `as-call_indirect-mid`, [1 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:592
assert_return(() => invoke($0 , `as-call_indirect-last`, [0 ]), [value("i32" , 2 )]);
// ./test/core/if.wast:593
assert_trap(() => invoke($0 , `as-call_indirect-last`, [1 ]), `undefined element`);
// ./test/core/if.wast:595
assert_return(() => invoke($0 , `as-store-first`, [0 ]), []);
// ./test/core/if.wast:596
assert_return(() => invoke($0 , `as-store-first`, [1 ]), []);
// ./test/core/if.wast:597
assert_return(() => invoke($0 , `as-store-last`, [0 ]), []);
// ./test/core/if.wast:598
assert_return(() => invoke($0 , `as-store-last`, [1 ]), []);
// ./test/core/if.wast:600
assert_return(() => invoke($0 , `as-memory.grow-value`, [0 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:601
assert_return(() => invoke($0 , `as-memory.grow-value`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:603
assert_return(() => invoke($0 , `as-call-value`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:604
assert_return(() => invoke($0 , `as-call-value`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:606
assert_return(() => invoke($0 , `as-return -value`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:607
assert_return(() => invoke($0 , `as-return -value`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:609
assert_return(() => invoke($0 , `as-drop-operand`, [0 ]), []);
// ./test/core/if.wast:610
assert_return(() => invoke($0 , `as-drop-operand`, [1 ]), []);
// ./test/core/if.wast:612
assert_return(() => invoke($0 , `as-br-value`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:613
assert_return(() => invoke($0 , `as-br-value`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:615
assert_return(() => invoke($0 , `as-local.set-value`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:616
assert_return(() => invoke($0 , `as-local.set-value`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:618
assert_return(() => invoke($0 , `as-local.tee-value`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:619
assert_return(() => invoke($0 , `as-local.tee-value`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:621
assert_return(() => invoke($0 , `as-global.set-value`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:622
assert_return(() => invoke($0 , `as-global.set-value`, [1 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:624
assert_return(() => invoke($0 , `as-load-operand`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:625
assert_return(() => invoke($0 , `as-load-operand`, [1 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:627
assert_return(() => invoke($0 , `as-unary-operand`, [0 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:628
assert_return(() => invoke($0 , `as-unary-operand`, [1 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:629
assert_return(() => invoke($0 , `as-unary-operand`, [-1 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:631
assert_return(() => invoke($0 , `as-binary-operand`, [0 , 0 ]), [value("i32" , 15 )]);
// ./test/core/if.wast:632
assert_return(() => invoke($0 , `as-binary-operand`, [0 , 1 ]), [value("i32" , -12 )]);
// ./test/core/if.wast:633
assert_return(() => invoke($0 , `as-binary-operand`, [1 , 0 ]), [value("i32" , -15 )]);
// ./test/core/if.wast:634
assert_return(() => invoke($0 , `as-binary-operand`, [1 , 1 ]), [value("i32" , 12 )]);
// ./test/core/if.wast:636
assert_return(() => invoke($0 , `as-test-operand`, [0 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:637
assert_return(() => invoke($0 , `as-test-operand`, [1 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:639
assert_return(() => invoke($0 , `as-compare-operand`, [0 , 0 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:640
assert_return(() => invoke($0 , `as-compare-operand`, [0 , 1 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:641
assert_return(() => invoke($0 , `as-compare-operand`, [1 , 0 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:642
assert_return(() => invoke($0 , `as-compare-operand`, [1 , 1 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:644
assert_return(() => invoke($0 , `as-binary-operands`, [0 ]), [value("i32" , -12 )]);
// ./test/core/if.wast:645
assert_return(() => invoke($0 , `as-binary-operands`, [1 ]), [value("i32" , 12 )]);
// ./test/core/if.wast:647
assert_return(() => invoke($0 , `as-compare-operands`, [0 ]), [value("i32" , 1 )]);
// ./test/core/if.wast:648
assert_return(() => invoke($0 , `as-compare-operands`, [1 ]), [value("i32" , 0 )]);
// ./test/core/if.wast:650
assert_return(() => invoke($0 , `as-mixed-operands`, [0 ]), [value("i32" , -3 )]);
// ./test/core/if.wast:651
assert_return(() => invoke($0 , `as-mixed-operands`, [1 ]), [value("i32" , 27 )]);
// ./test/core/if.wast:653
assert_return(() => invoke($0 , `break -bare`, []), [value("i32" , 19 )]);
// ./test/core/if.wast:654
assert_return(() => invoke($0 , `break -value`, [1 ]), [value("i32" , 18 )]);
// ./test/core/if.wast:655
assert_return(() => invoke($0 , `break -value`, [0 ]), [value("i32" , 21 )]);
// ./test/core/if.wast:656
assert_return(
() => invoke($0 , `break -multi-value`, [0 ]),
[value("i32" , -18 ), value("i32" , 18 ), value("i64" , -18 n)],
);
// ./test/core/if.wast:659
assert_return(
() => invoke($0 , `break -multi-value`, [1 ]),
[value("i32" , 18 ), value("i32" , -18 ), value("i64" , 18 n)],
);
// ./test/core/if.wast:663
assert_return(() => invoke($0 , `param`, [0 ]), [value("i32" , -1 )]);
// ./test/core/if.wast:664
assert_return(() => invoke($0 , `param`, [1 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:665
assert_return(() => invoke($0 , `params`, [0 ]), [value("i32" , -1 )]);
// ./test/core/if.wast:666
assert_return(() => invoke($0 , `params`, [1 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:667
assert_return(() => invoke($0 , `params-id`, [0 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:668
assert_return(() => invoke($0 , `params-id`, [1 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:669
assert_return(() => invoke($0 , `param-break `, [0 ]), [value("i32" , -1 )]);
// ./test/core/if.wast:670
assert_return(() => invoke($0 , `param-break `, [1 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:671
assert_return(() => invoke($0 , `params-break `, [0 ]), [value("i32" , -1 )]);
// ./test/core/if.wast:672
assert_return(() => invoke($0 , `params-break `, [1 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:673
assert_return(() => invoke($0 , `params-id-break `, [0 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:674
assert_return(() => invoke($0 , `params-id-break `, [1 ]), [value("i32" , 3 )]);
// ./test/core/if.wast:676
assert_return(() => invoke($0 , `effects`, [1 ]), [value("i32" , -14 )]);
// ./test/core/if.wast:677
assert_return(() => invoke($0 , `effects`, [0 ]), [value("i32" , -6 )]);
// ./test/core/if.wast:679
assert_return(() => invoke($0 , `add64_u_with_carry`, [0 n, 0 n, 0 ]), [value("i64" , 0 n), value("i32" , 0 )]);
// ./test/core/if.wast:683
assert_return(
() => invoke($0 , `add64_u_with_carry`, [100 n, 124 n, 0 ]),
[value("i64" , 224 n), value("i32" , 0 )],
);
// ./test/core/if.wast:687
assert_return(
() => invoke($0 , `add64_u_with_carry`, [-1 n, 0 n, 0 ]),
[value("i64" , -1 n), value("i32" , 0 )],
);
// ./test/core/if.wast:691
assert_return(() => invoke($0 , `add64_u_with_carry`, [-1 n, 1 n, 0 ]), [value("i64" , 0 n), value("i32" , 1 )]);
// ./test/core/if.wast:695
assert_return(
() => invoke($0 , `add64_u_with_carry`, [-1 n, -1 n, 0 ]),
[value("i64" , -2 n), value("i32" , 1 )],
);
// ./test/core/if.wast:699
assert_return(() => invoke($0 , `add64_u_with_carry`, [-1 n, 0 n, 1 ]), [value("i64" , 0 n), value("i32" , 1 )]);
// ./test/core/if.wast:703
assert_return(() => invoke($0 , `add64_u_with_carry`, [-1 n, 1 n, 1 ]), [value("i64" , 1 n), value("i32" , 1 )]);
// ./test/core/if.wast:707
assert_return(
() => invoke($0 , `add64_u_with_carry`, [
-9223372036854775808 n,
-9223372036854775808 n,
0 ,
]),
[value("i64" , 0 n), value("i32" , 1 )],
);
// ./test/core/if.wast:712
assert_return(() => invoke($0 , `add64_u_saturated`, [0 n, 0 n]), [value("i64" , 0 n)]);
// ./test/core/if.wast:715
assert_return(() => invoke($0 , `add64_u_saturated`, [1230 n, 23 n]), [value("i64" , 1253 n)]);
// ./test/core/if.wast:718
assert_return(() => invoke($0 , `add64_u_saturated`, [-1 n, 0 n]), [value("i64" , -1 n)]);
// ./test/core/if.wast:721
assert_return(() => invoke($0 , `add64_u_saturated`, [-1 n, 1 n]), [value("i64" , -1 n)]);
// ./test/core/if.wast:724
assert_return(() => invoke($0 , `add64_u_saturated`, [-1 n, -1 n]), [value("i64" , -1 n)]);
// ./test/core/if.wast:727
assert_return(
() => invoke($0 , `add64_u_saturated`, [-9223372036854775808 n, -9223372036854775808 n]),
[value("i64" , -1 n)],
);
// ./test/core/if.wast:731
assert_return(() => invoke($0 , `type-use`, []), []);
// ./test/core/if.wast:733
assert_return(() => invoke($0 , `atypical-condition`, []), []);
// ./test/core/if.wast:735
assert_malformed(
() => instantiate(`(type $$sig (func (param i32) (result i32))) (func (i32.const 0 ) (if (type $$sig) (result i32) (param i32) (i32.const 1 ) (then)) ) `),
`unexpected token`,
);
// ./test/core/if.wast:744
assert_malformed(
() => instantiate(`(type $$sig (func (param i32) (result i32))) (func (i32.const 0 ) (if (param i32) (type $$sig) (result i32) (i32.const 1 ) (then)) ) `),
`unexpected token`,
);
// ./test/core/if.wast:753
assert_malformed(
() => instantiate(`(type $$sig (func (param i32) (result i32))) (func (i32.const 0 ) (if (param i32) (result i32) (type $$sig) (i32.const 1 ) (then)) ) `),
`unexpected token`,
);
// ./test/core/if.wast:762
assert_malformed(
() => instantiate(`(type $$sig (func (param i32) (result i32))) (func (i32.const 0 ) (if (result i32) (type $$sig) (param i32) (i32.const 1 ) (then)) ) `),
`unexpected token`,
);
// ./test/core/if.wast:771
assert_malformed(
() => instantiate(`(type $$sig (func (param i32) (result i32))) (func (i32.const 0 ) (if (result i32) (param i32) (type $$sig) (i32.const 1 ) (then)) ) `),
`unexpected token`,
);
// ./test/core/if.wast:780
assert_malformed(
() => instantiate(`(func (i32.const 0 ) (if (result i32) (param i32) (i32.const 1 ) (then))) `),
`unexpected token`,
);
// ./test/core/if.wast:787
assert_malformed(
() => instantiate(`(func (i32.const 0 ) (i32.const 1 ) (if (param $$x i32) (then (drop)) (else (drop))) ) `),
`unexpected token`,
);
// ./test/core/if.wast:795
assert_malformed(
() => instantiate(`(type $$sig (func)) (func (i32.const 1 ) (if (type $$sig) (result i32) (then (i32.const 0 )) (else (i32.const 2 ))) (unreachable) ) `),
`inline function type`,
);
// ./test/core/if.wast:805
assert_malformed(
() => instantiate(`(type $$sig (func (param i32) (result i32))) (func (i32.const 1 ) (if (type $$sig) (result i32) (then (i32.const 0 )) (else (i32.const 2 ))) (unreachable) ) `),
`inline function type`,
);
// ./test/core/if.wast:815
assert_malformed(
() => instantiate(`(type $$sig (func (param i32) (result i32))) (func (i32.const 0 ) (i32.const 1 ) (if (type $$sig) (param i32) (then (drop)) (else (drop))) (unreachable) ) `),
`inline function type`,
);
// ./test/core/if.wast:825
assert_malformed(
() => instantiate(`(type $$sig (func (param i32 i32) (result i32))) (func (i32.const 0 ) (i32.const 1 ) (if (type $$sig) (param i32) (result i32) (then)) (unreachable) ) `),
`inline function type`,
);
// ./test/core/if.wast:835
assert_invalid(
() => instantiate(`(module
(type $$sig (func))
(func (i32.const 1 ) (if (type $$sig) (i32.const 0 ) (then)))
)`),
`type mismatch`,
);
// ./test/core/if.wast:843
assert_invalid(
() => instantiate(`(module (func $$type-empty-i32 (result i32) (if (i32.const 0 ) (then))))`),
`type mismatch`,
);
// ./test/core/if.wast:847
assert_invalid(
() => instantiate(`(module (func $$type-empty-i64 (result i64) (if (i32.const 0 ) (then))))`),
`type mismatch`,
);
// ./test/core/if.wast:851
assert_invalid(
() => instantiate(`(module (func $$type-empty-f32 (result f32) (if (i32.const 0 ) (then))))`),
`type mismatch`,
);
// ./test/core/if.wast:855
assert_invalid(
() => instantiate(`(module (func $$type-empty-f64 (result f64) (if (i32.const 0 ) (then))))`),
`type mismatch`,
);
// ./test/core/if.wast:860
assert_invalid(
() => instantiate(`(module (func $$type-empty-i32 (result i32) (if (i32.const 0 ) (then) (else ))))`),
`type mismatch`,
);
// ./test/core/if.wast:864
assert_invalid(
() => instantiate(`(module (func $$type-empty-i64 (result i64) (if (i32.const 0 ) (then) (else ))))`),
`type mismatch`,
);
// ./test/core/if.wast:868
assert_invalid(
() => instantiate(`(module (func $$type-empty-f32 (result f32) (if (i32.const 0 ) (then) (else ))))`),
`type mismatch`,
);
// ./test/core/if.wast:872
assert_invalid(
() => instantiate(`(module (func $$type-empty-f64 (result f64) (if (i32.const 0 ) (then) (else ))))`),
`type mismatch`,
);
// ./test/core/if.wast:877
assert_invalid(
() => instantiate(`(module (func $$type-then-value-num-vs-void
(if (i32.const 1 ) (then (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:883
assert_invalid(
() => instantiate(`(module (func $$type-then-value-num-vs-void -else
(if (i32.const 1 ) (then (i32.const 1 )) (else ))
))`),
`type mismatch`,
);
// ./test/core/if.wast:889
assert_invalid(
() => instantiate(`(module (func $$type-else -value-num-vs-void
(if (i32.const 1 ) (then) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:895
assert_invalid(
() => instantiate(`(module (func $$type-both-value-num-vs-void
(if (i32.const 1 ) (then (i32.const 1 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:902
assert_invalid(
() => instantiate(`(module (func $$type-then-value-nums-vs-void
(if (i32.const 1 ) (then (i32.const 1 ) (i32.const 2 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:908
assert_invalid(
() => instantiate(`(module (func $$type-then-value-nums-vs-void -else
(if (i32.const 1 ) (then (i32.const 1 ) (i32.const 2 )) (else ))
))`),
`type mismatch`,
);
// ./test/core/if.wast:914
assert_invalid(
() => instantiate(`(module (func $$type-else -value-nums-vs-void
(if (i32.const 1 ) (then) (else (i32.const 1 ) (i32.const 2 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:920
assert_invalid(
() => instantiate(`(module (func $$type-both-value-nums-vs-void
(if (i32.const 1 ) (then (i32.const 1 ) (i32.const 2 )) (else (i32.const 2 ) (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:927
assert_invalid(
() => instantiate(`(module (func $$type-then-value-empty-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then) (else (i32.const 0 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:933
assert_invalid(
() => instantiate(`(module (func $$type-else -value-empty-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i32.const 0 )) (else ))
))`),
`type mismatch`,
);
// ./test/core/if.wast:939
assert_invalid(
() => instantiate(`(module (func $$type-both-value-empty-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then) (else ))
))`),
`type mismatch`,
);
// ./test/core/if.wast:946
assert_invalid(
() => instantiate(`(module (func $$type-then-value-empty-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then) (else (i32.const 0 ) (i32.const 2 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:952
assert_invalid(
() => instantiate(`(module (func $$type-else -value-empty-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (i32.const 0 ) (i32.const 1 )) (else ))
))`),
`type mismatch`,
);
// ./test/core/if.wast:958
assert_invalid(
() => instantiate(`(module (func $$type-both-value-empty-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then) (else ))
))`),
`type mismatch`,
);
// ./test/core/if.wast:965
assert_invalid(
() => instantiate(`(module (func $$type-no-else -vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:971
assert_invalid(
() => instantiate(`(module (func $$type-no-else -vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 ) (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:978
assert_invalid(
() => instantiate(`(module (func $$type-then-value-void -vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (nop)) (else (i32.const 0 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:984
assert_invalid(
() => instantiate(`(module (func $$type-else -value-void -vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i32.const 0 )) (else (nop)))
))`),
`type mismatch`,
);
// ./test/core/if.wast:990
assert_invalid(
() => instantiate(`(module (func $$type-both-value-void -vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (nop)) (else (nop)))
))`),
`type mismatch`,
);
// ./test/core/if.wast:997
assert_invalid(
() => instantiate(`(module (func $$type-then-value-void -vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (nop)) (else (i32.const 0 ) (i32.const 0 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1003
assert_invalid(
() => instantiate(`(module (func $$type-else -value-void -vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (i32.const 0 ) (i32.const 0 )) (else (nop)))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1009
assert_invalid(
() => instantiate(`(module (func $$type-both-value-void -vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (nop)) (else (nop)))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1016
assert_invalid(
() => instantiate(`(module (func $$type-then-value-num-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i64.const 1 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1022
assert_invalid(
() => instantiate(`(module (func $$type-else -value-num-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i32.const 1 )) (else (i64.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1028
assert_invalid(
() => instantiate(`(module (func $$type-both-value-num-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i64.const 1 )) (else (i64.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1035
assert_invalid(
() => instantiate(`(module (func $$type-then-value-num-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 )) (else (i32.const 1 ) (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1041
assert_invalid(
() => instantiate(`(module (func $$type-else -value-num-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 ) (i32.const 1 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1047
assert_invalid(
() => instantiate(`(module (func $$type-both-value-num-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1054
assert_invalid(
() => instantiate(`(module (func $$type-then-value-partial-vs-nums (result i32 i32)
(i32.const 0 )
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 )) (else (i32.const 1 ) (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1061
assert_invalid(
() => instantiate(`(module (func $$type-else -value-partial-vs-nums (result i32 i32)
(i32.const 0 )
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 ) (i32.const 1 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1068
assert_invalid(
() => instantiate(`(module (func $$type-both-value-partial-vs-nums (result i32 i32)
(i32.const 0 )
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1076
assert_invalid(
() => instantiate(`(module (func $$type-then-value-nums-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i32.const 1 ) (i32.const 1 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1082
assert_invalid(
() => instantiate(`(module (func $$type-else -value-nums-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i32.const 1 )) (else (i32.const 1 ) (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1088
assert_invalid(
() => instantiate(`(module (func $$type-both-value-nums-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i32.const 1 ) (i32.const 1 )) (else (i32.const 1 ) (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1095
assert_invalid(
() => instantiate(`(module (func $$type-both-different-value-num-vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i64.const 1 )) (else (f64.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1101
assert_invalid(
() => instantiate(`(module (func $$type-both-different-value-nums-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 ) (i32.const 1 ) (i32.const 1 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1108
assert_invalid(
() => instantiate(`(module (func $$type-then-value-unreached-select (result i32)
(if (result i64)
(i32.const 0 )
(then (select (unreachable) (unreachable) (unreachable)))
(else (i64.const 0 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1118
assert_invalid(
() => instantiate(`(module (func $$type-else -value-unreached-select (result i32)
(if (result i64)
(i32.const 1 )
(then (i64.const 0 ))
(else (select (unreachable) (unreachable) (unreachable)))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1128
assert_invalid(
() => instantiate(`(module (func $$type-else -value-unreached-select (result i32)
(if (result i64)
(i32.const 1 )
(then (select (unreachable) (unreachable) (unreachable)))
(else (select (unreachable) (unreachable) (unreachable)))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1139
assert_invalid(
() => instantiate(`(module (func $$type-then-break -last-void -vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (br 0 )) (else (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1145
assert_invalid(
() => instantiate(`(module (func $$type-else -break -last-void -vs-num (result i32)
(if (result i32) (i32.const 1 ) (then (i32.const 1 )) (else (br 0 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1151
assert_invalid(
() => instantiate(`(module (func $$type-then-break -last-void -vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (br 0 )) (else (i32.const 1 ) (i32.const 1 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1157
assert_invalid(
() => instantiate(`(module (func $$type-else -break -last-void -vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 ) (then (i32.const 1 ) (i32.const 1 )) (else (br 0 )))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1164
assert_invalid(
() => instantiate(`(module (func $$type-then-break -empty-vs-num (result i32)
(if (result i32) (i32.const 1 )
(then (br 0 ) (i32.const 1 ))
(else (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1173
assert_invalid(
() => instantiate(`(module (func $$type-else -break -empty-vs-num (result i32)
(if (result i32) (i32.const 1 )
(then (i32.const 1 ))
(else (br 0 ) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1182
assert_invalid(
() => instantiate(`(module (func $$type-then-break -empty-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 )
(then (br 0 ) (i32.const 1 ) (i32.const 1 ))
(else (i32.const 1 ) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1191
assert_invalid(
() => instantiate(`(module (func $$type-else -break -empty-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 )
(then (i32.const 1 ) (i32.const 1 ))
(else (br 0 ) (i32.const 1 ) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1201
assert_invalid(
() => instantiate(`(module (func $$type-then-break -void -vs-num (result i32)
(if (result i32) (i32.const 1 )
(then (br 0 (nop)) (i32.const 1 ))
(else (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1210
assert_invalid(
() => instantiate(`(module (func $$type-else -break -void -vs-num (result i32)
(if (result i32) (i32.const 1 )
(then (i32.const 1 ))
(else (br 0 (nop)) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1219
assert_invalid(
() => instantiate(`(module (func $$type-then-break -void -vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 )
(then (br 0 (nop)) (i32.const 1 ) (i32.const 1 ))
(else (i32.const 1 ) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1228
assert_invalid(
() => instantiate(`(module (func $$type-else -break -void -vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 )
(then (i32.const 1 ) (i32.const 1 ))
(else (br 0 (nop)) (i32.const 1 ) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1238
assert_invalid(
() => instantiate(`(module (func $$type-then-break -num-vs-num (result i32)
(if (result i32) (i32.const 1 )
(then (br 0 (i64.const 1 )) (i32.const 1 ))
(else (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1247
assert_invalid(
() => instantiate(`(module (func $$type-else -break -num-vs-num (result i32)
(if (result i32) (i32.const 1 )
(then (i32.const 1 ))
(else (br 0 (i64.const 1 )) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1256
assert_invalid(
() => instantiate(`(module (func $$type-then-break -num-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 )
(then (br 0 (i64.const 1 )) (i32.const 1 ) (i32.const 1 ))
(else (i32.const 1 ) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1265
assert_invalid(
() => instantiate(`(module (func $$type-else -break -num-vs-nums (result i32 i32)
(if (result i32 i32) (i32.const 1 )
(then (i32.const 1 ) (i32.const 1 ))
(else (br 0 (i64.const 1 )) (i32.const 1 ) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1274
assert_invalid(
() => instantiate(`(module (func $$type-then-break -partial-vs-nums (result i32 i32)
(i32.const 1 )
(if (result i32 i32) (i32.const 1 )
(then (br 0 (i64.const 1 )) (i32.const 1 ))
(else (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1284
assert_invalid(
() => instantiate(`(module (func $$type-else -break -partial-vs-nums (result i32 i32)
(i32.const 1 )
(if (result i32 i32) (i32.const 1 )
(then (i32.const 1 ))
(else (br 0 (i64.const 1 )) (i32.const 1 ))
)
))`),
`type mismatch`,
);
// ./test/core/if.wast:1295
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty
(if (then))
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1303
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-block
(i32.const 0 )
(block (if (then)))
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1312
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-loop
(i32.const 0 )
(loop (if (then)))
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1321
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-then
(i32.const 0 ) (i32.const 0 )
(if (then (if (then))))
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1330
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-else
(i32.const 0 ) (i32.const 0 )
(if (result i32) (then (i32.const 0 )) (else (if (then)) (i32.const 0 )))
(drop)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1340
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-br
(i32.const 0 )
(block (br 0 (if (then))) (drop))
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1349
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-br_if
(i32.const 0 )
(block (br_if 0 (if (then)) (i32.const 1 )) (drop))
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1358
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-br_table
(i32.const 0 )
(block (br_table 0 (if (then))) (drop))
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1367
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-return
(return (if (then))) (drop)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1375
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-select
(select (if (then)) (i32.const 1 ) (i32.const 2 )) (drop)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1383
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-call
(call 1 (if (then))) (drop)
)
(func (param i32) (result i32) (local.get 0 ))
)`),
`type mismatch`,
);
// ./test/core/if.wast:1392
assert_invalid(
() => instantiate(`(module
(func $$f (param i32) (result i32) (local.get 0 ))
(type $$sig (func (param i32) (result i32)))
(table funcref (elem $$f))
(func $$type-condition-empty-in-call_indirect
(block (result i32)
(call_indirect (type $$sig)
(if (then)) (i32.const 0 )
)
(drop)
)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1408
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-local.set
(local i32)
(local.set 0 (if (then))) (local.get 0 ) (drop)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1417
assert_invalid(
() => instantiate(`(module
(func $$type-condition-empty-in-local.tee
(local i32)
(local.tee 0 (if (then))) (drop)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1426
assert_invalid(
() => instantiate(`(module
(global $$x (mut i32) (i32.const 0 ))
(func $$type-condition-empty-in-global.set
(global.set $$x (if (then))) (global.get $$x) (drop)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1435
assert_invalid(
() => instantiate(`(module
(memory 0 )
(func $$type-condition-empty-in-memory.grow
(memory.grow (if (then))) (drop)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1444
assert_invalid(
() => instantiate(`(module
(memory 0 )
(func $$type-condition-empty-in-load
(i32.load (if (then))) (drop)
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1453
assert_invalid(
() => instantiate(`(module
(memory 1 )
(func $$type-condition-empty-in-store
(i32.store (if (then)) (i32.const 1 ))
)
)`),
`type mismatch`,
);
// ./test/core/if.wast:1463
assert_invalid(
() => instantiate(`(module (func $$type-param-void -vs-num
(if (param i32) (i32.const 1 ) (then (drop)))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1469
assert_invalid(
() => instantiate(`(module (func $$type-param-void -vs-nums
(if (param i32 f64) (i32.const 1 ) (then (drop) (drop)))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1475
assert_invalid(
() => instantiate(`(module (func $$type-param-num-vs-num
(f32.const 0 ) (if (param i32) (i32.const 1 ) (then (drop)))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1481
assert_invalid(
() => instantiate(`(module (func $$type-param-num-vs-nums
(f32.const 0 ) (if (param f32 i32) (i32.const 1 ) (then (drop) (drop)))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1487
assert_invalid(
() => instantiate(`(module (func $$type-param-nested-void -vs-num
(block (if (param i32) (i32.const 1 ) (then (drop))))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1493
assert_invalid(
() => instantiate(`(module (func $$type-param-void -vs-nums
(block (if (param i32 f64) (i32.const 1 ) (then (drop) (drop))))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1499
assert_invalid(
() => instantiate(`(module (func $$type-param-num-vs-num
(block (f32.const 0 ) (if (param i32) (i32.const 1 ) (then (drop))))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1505
assert_invalid(
() => instantiate(`(module (func $$type-param-num-vs-nums
(block (f32.const 0 ) (if (param f32 i32) (i32.const 1 ) (then (drop) (drop))))
))`),
`type mismatch`,
);
// ./test/core/if.wast:1512
assert_malformed(
() => instantiate(`(func (param i32) (result i32) if (param $$x i32) end) `),
`unexpected token`,
);
// ./test/core/if.wast:1516
assert_malformed(
() => instantiate(`(func (param i32) (result i32) (if (param $$x i32) (then))) `),
`unexpected token`,
);
// ./test/core/if.wast:1521
assert_malformed(() => instantiate(`(func i32.const 0 if end $$l) `), `mismatching label`);
// ./test/core/if.wast:1525
assert_malformed(
() => instantiate(`(func i32.const 0 if $$a end $$l) `),
`mismatching label`,
);
// ./test/core/if.wast:1529
assert_malformed(
() => instantiate(`(func i32.const 0 if else $$l end) `),
`mismatching label`,
);
// ./test/core/if.wast:1533
assert_malformed(
() => instantiate(`(func i32.const 0 if $$a else $$l end) `),
`mismatching label`,
);
// ./test/core/if.wast:1537
assert_malformed(
() => instantiate(`(func i32.const 0 if else end $$l) `),
`mismatching label`,
);
// ./test/core/if.wast:1541
assert_malformed(
() => instantiate(`(func i32.const 0 if else $$l end $$l) `),
`mismatching label`,
);
// ./test/core/if.wast:1545
assert_malformed(
() => instantiate(`(func i32.const 0 if else $$l1 end $$l2) `),
`mismatching label`,
);
// ./test/core/if.wast:1549
assert_malformed(
() => instantiate(`(func i32.const 0 if $$a else end $$l) `),
`mismatching label`,
);
// ./test/core/if.wast:1553
assert_malformed(
() => instantiate(`(func i32.const 0 if $$a else $$a end $$l) `),
`mismatching label`,
);
// ./test/core/if.wast:1557
assert_malformed(
() => instantiate(`(func i32.const 0 if $$a else $$l end $$l) `),
`mismatching label`,
);
// ./test/core/if.wast:1561
assert_malformed(
() => instantiate(`(func (if i32.const 0 (then) (else ))) `),
`unexpected token`,
);
Messung V0.5 in Prozent C=88 H=94 G=90
¤ Dauer der Verarbeitung: 0.23 Sekunden
(vorverarbeitet am 2026-06-12)
¤
*© Formatika GbR, Deutschland