2 (type $t (func (result i32)))
4 (func $nn (param $r (ref $t)) (result i32)
6 (return (call_ref (br_on_null $l (local.get $r))))
10 (func $n (param $r (ref null $t)) (result i32)
12 (return (call_ref (br_on_null $l (local.get $r))))
18 (func $f (result i32) (i32.const 7))
20 (func (export "nullable-null") (result i32) (call $n (ref.null $t)))
21 (func (export "nonnullable-f") (result i32) (call $nn (ref.func $f)))
22 (func (export "nullable-f") (result i32) (call $n (ref.func $f)))
24 (func (export "unreachable") (result i32)
26 (return (call_ref (br_on_null $l (unreachable))))
32 (assert_trap (invoke "unreachable") "unreachable")
34 (assert_return (invoke "nullable-null") (i32.const -1))
35 (assert_return (invoke "nonnullable-f") (i32.const 7))
36 (assert_return (invoke "nullable-f") (i32.const 7))
40 (type $t (func (result i32)))
41 (func $g (param $r (ref $t)) (drop (br_on_null 0 (local.get $r))))
42 (func (call $g (ref.null $t)))
49 (func (param $r (ref $t)) (drop (br_on_null 0 (local.get $r))))
50 (func (param $r (ref func)) (drop (br_on_null 0 (local.get $r))))
51 (func (param $r (ref extern)) (drop (br_on_null 0 (local.get $r))))
56 (type $t (func (param i32) (result i32)))
58 (func $f (param i32) (result i32) (i32.mul (local.get 0) (local.get 0)))
60 (func $a (param $n i32) (param $r (ref null $t)) (result i32)
61 (block $l (result i32)
62 (return (call_ref (br_on_null $l (local.get $n) (local.get $r))))
66 (func (export "args-null") (param $n i32) (result i32)
67 (call $a (local.get $n) (ref.null $t))
69 (func (export "args-f") (param $n i32) (result i32)
70 (call $a (local.get $n) (ref.func $f))
74 (assert_return (invoke "args-null" (i32.const 3)) (i32.const 3))
75 (assert_return (invoke "args-f" (i32.const 3)) (i32.const 9))