ba5c454701bf596bbe74fd4417795e39e15a50c4
[platform/framework/web/lwnode.git] /
1 (module
2   (type $t (func (result i32)))
3
4   (func $nn (param $r (ref $t)) (result i32)
5     (call_ref (ref.as_non_null (local.get $r)))
6   )
7   (func $n (param $r (ref null $t)) (result i32)
8     (call_ref (ref.as_non_null (local.get $r)))
9   )
10
11   (elem func $f)
12   (func $f (result i32) (i32.const 7))
13
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)))
17
18   (func (export "unreachable") (result i32)
19     (unreachable)
20     (ref.as_non_null)
21     (call $nn)
22   )
23 )
24
25 (assert_trap (invoke "unreachable") "unreachable")
26
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))
30
31 (assert_invalid
32   (module
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)))
36   )
37   "type mismatch"
38 )
39
40
41 (module
42   (type $t (func))
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))))
46 )