2 (type $t (func (result i32)))
4 (func $nn (param $r (ref $t)) (result i32)
5 (call_ref (ref.as_non_null (local.get $r)))
7 (func $n (param $r (ref null $t)) (result i32)
8 (call_ref (ref.as_non_null (local.get $r)))
12 (func $f (result i32) (i32.const 7))
14 (func (export "nullable-null") (result i32) (call $n (ref.null $t)))
15 (func (export "nonnullable-f") (result i32) (call $nn (ref.func $f)))
16 (func (export "nullable-f") (result i32) (call $n (ref.func $f)))
18 (func (export "unreachable") (result i32)
25 (assert_trap (invoke "unreachable") "unreachable")
27 (assert_trap (invoke "nullable-null") "null reference")
28 (assert_return (invoke "nonnullable-f") (i32.const 7))
29 (assert_return (invoke "nullable-f") (i32.const 7))
33 (type $t (func (result i32)))
34 (func $g (param $r (ref $t)) (drop (ref.as_non_null (local.get $r))))
35 (func (call $g (ref.null $t)))
43 (func (param $r (ref $t)) (drop (ref.as_non_null (local.get $r))))
44 (func (param $r (ref func)) (drop (ref.as_non_null (local.get $r))))
45 (func (param $r (ref extern)) (drop (ref.as_non_null (local.get $r))))