summaryrefslogtreecommitdiff
path: root/test/reference-types.wast.from-wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/reference-types.wast.from-wast')
-rw-r--r--test/reference-types.wast.from-wast387
1 files changed, 186 insertions, 201 deletions
diff --git a/test/reference-types.wast.from-wast b/test/reference-types.wast.from-wast
index 3916606c0..ac9660531 100644
--- a/test/reference-types.wast.from-wast
+++ b/test/reference-types.wast.from-wast
@@ -1,24 +1,20 @@
(module
- (type $externref_=>_none (func (param externref)))
- (type $none_=>_externref (func (result externref)))
(type $funcref_=>_none (func (param funcref)))
- (type $nullref_=>_none (func (param nullref)))
- (type $exnref_=>_none (func (param exnref)))
(type $none_=>_funcref (func (result funcref)))
+ (type $externref_=>_none (func (param externref)))
+ (type $exnref_=>_none (func (param exnref)))
+ (type $none_=>_externref (func (result externref)))
(type $none_=>_exnref (func (result exnref)))
(type $none_=>_none (func))
- (type $none_=>_nullref (func (result nullref)))
(type $externref_=>_funcref (func (param externref) (result funcref)))
(import "env" "import_global" (global $import_global externref))
(import "env" "import_func" (func $import_func (param externref) (result funcref)))
- (table $0 4 4 funcref)
- (elem (i32.const 0) $take_externref $take_funcref $take_exnref $take_nullref)
- (global $global_externref (mut externref) (ref.null))
- (global $global_funcref (mut funcref) (ref.null))
- (global $global_exnref (mut exnref) (ref.null))
- (global $global_nullref (mut nullref) (ref.null))
- (global $global_externref2 (mut externref) (ref.func $foo))
- (global $global_funcref2 (mut funcref) (ref.func $foo))
+ (table $0 3 3 funcref)
+ (elem (i32.const 0) $take_externref $take_funcref $take_exnref)
+ (global $global_externref (mut externref) (ref.null extern))
+ (global $global_funcref (mut funcref) (ref.null func))
+ (global $global_funcref_func (mut funcref) (ref.func $foo))
+ (global $global_exnref (mut exnref) (ref.null exn))
(export "export_func" (func $import_func))
(export "export_global" (global $import_global))
(func $take_externref (param $0 externref)
@@ -30,9 +26,6 @@
(func $take_exnref (param $0 exnref)
(nop)
)
- (func $take_nullref (param $0 nullref)
- (nop)
- )
(func $foo
(nop)
)
@@ -40,30 +33,23 @@
(local $local_externref externref)
(local $local_funcref funcref)
(local $local_exnref exnref)
- (local $local_nullref nullref)
(local.set $local_externref
(local.get $local_externref)
)
(local.set $local_externref
- (local.get $local_funcref)
- )
- (local.set $local_externref
- (local.get $local_exnref)
- )
- (local.set $local_externref
- (local.get $local_nullref)
- )
- (local.set $local_externref
- (ref.null)
+ (global.get $global_externref)
)
(local.set $local_externref
- (ref.func $foo)
+ (ref.null extern)
)
(local.set $local_funcref
(local.get $local_funcref)
)
(local.set $local_funcref
- (ref.null)
+ (global.get $global_funcref)
+ )
+ (local.set $local_funcref
+ (ref.null func)
)
(local.set $local_funcref
(ref.func $foo)
@@ -72,37 +58,28 @@
(local.get $local_exnref)
)
(local.set $local_exnref
- (ref.null)
- )
- (local.set $local_nullref
- (local.get $local_nullref)
+ (global.get $global_exnref)
)
- (local.set $local_nullref
- (ref.null)
+ (local.set $local_exnref
+ (ref.null exn)
)
(global.set $global_externref
(global.get $global_externref)
)
(global.set $global_externref
- (global.get $global_funcref)
- )
- (global.set $global_externref
- (global.get $global_exnref)
- )
- (global.set $global_externref
- (global.get $global_nullref)
- )
- (global.set $global_externref
- (ref.null)
+ (local.get $local_externref)
)
(global.set $global_externref
- (ref.func $foo)
+ (ref.null extern)
)
(global.set $global_funcref
(global.get $global_funcref)
)
(global.set $global_funcref
- (ref.null)
+ (local.get $local_funcref)
+ )
+ (global.set $global_funcref
+ (ref.null func)
)
(global.set $global_funcref
(ref.func $foo)
@@ -111,40 +88,51 @@
(global.get $global_exnref)
)
(global.set $global_exnref
- (ref.null)
- )
- (global.set $global_nullref
- (global.get $global_nullref)
+ (local.get $local_exnref)
)
- (global.set $global_nullref
- (ref.null)
+ (global.set $global_exnref
+ (ref.null exn)
)
(call $take_externref
(local.get $local_externref)
)
(call $take_externref
- (local.get $local_funcref)
+ (global.get $global_externref)
)
(call $take_externref
+ (ref.null extern)
+ )
+ (call $take_funcref
+ (local.get $local_funcref)
+ )
+ (call $take_funcref
+ (global.get $global_funcref)
+ )
+ (call $take_funcref
+ (ref.null func)
+ )
+ (call $take_funcref
+ (ref.func $foo)
+ )
+ (call $take_exnref
(local.get $local_exnref)
)
- (call $take_externref
- (ref.null)
+ (call $take_exnref
+ (global.get $global_exnref)
)
- (call_indirect (type $externref_=>_none)
- (local.get $local_externref)
- (i32.const 0)
+ (call $take_exnref
+ (ref.null exn)
)
(call_indirect (type $externref_=>_none)
- (local.get $local_funcref)
+ (local.get $local_externref)
(i32.const 0)
)
(call_indirect (type $externref_=>_none)
- (local.get $local_exnref)
+ (global.get $global_externref)
(i32.const 0)
)
(call_indirect (type $externref_=>_none)
- (ref.null)
+ (ref.null extern)
(i32.const 0)
)
(call_indirect (type $funcref_=>_none)
@@ -152,7 +140,15 @@
(i32.const 1)
)
(call_indirect (type $funcref_=>_none)
- (ref.null)
+ (global.get $global_funcref)
+ (i32.const 1)
+ )
+ (call_indirect (type $funcref_=>_none)
+ (ref.null func)
+ (i32.const 1)
+ )
+ (call_indirect (type $funcref_=>_none)
+ (ref.func $foo)
(i32.const 1)
)
(call_indirect (type $exnref_=>_none)
@@ -160,16 +156,12 @@
(i32.const 2)
)
(call_indirect (type $exnref_=>_none)
- (ref.null)
+ (global.get $global_exnref)
(i32.const 2)
)
- (call_indirect (type $nullref_=>_none)
- (local.get $local_nullref)
- (i32.const 3)
- )
- (call_indirect (type $nullref_=>_none)
- (ref.null)
- (i32.const 3)
+ (call_indirect (type $exnref_=>_none)
+ (ref.null exn)
+ (i32.const 2)
)
(drop
(block $block (result externref)
@@ -182,7 +174,7 @@
(drop
(block $block0 (result externref)
(br_if $block0
- (local.get $local_funcref)
+ (global.get $global_externref)
(i32.const 1)
)
)
@@ -190,15 +182,15 @@
(drop
(block $block1 (result externref)
(br_if $block1
- (local.get $local_exnref)
+ (ref.null extern)
(i32.const 1)
)
)
)
(drop
- (block $block2 (result externref)
+ (block $block2 (result funcref)
(br_if $block2
- (ref.null)
+ (local.get $local_funcref)
(i32.const 1)
)
)
@@ -206,23 +198,47 @@
(drop
(block $block3 (result funcref)
(br_if $block3
- (ref.null)
+ (global.get $global_funcref)
(i32.const 1)
)
)
)
(drop
- (block $block4 (result exnref)
+ (block $block4 (result funcref)
(br_if $block4
- (ref.null)
+ (ref.null func)
(i32.const 1)
)
)
)
(drop
- (block $block5 (result nullref)
+ (block $block5 (result funcref)
(br_if $block5
- (ref.null)
+ (ref.func $foo)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $block6 (result exnref)
+ (br_if $block6
+ (local.get $local_exnref)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $block7 (result exnref)
+ (br_if $block7
+ (global.get $global_exnref)
+ (i32.const 1)
+ )
+ )
+ )
+ (drop
+ (block $block8 (result exnref)
+ (br_if $block8
+ (ref.null exn)
(i32.const 1)
)
)
@@ -233,78 +249,69 @@
)
)
(drop
- (loop $loop-in6 (result externref)
- (local.get $local_funcref)
+ (loop $loop-in9 (result externref)
+ (global.get $global_externref)
)
)
(drop
- (loop $loop-in7 (result externref)
- (local.get $local_exnref)
+ (loop $loop-in10 (result externref)
+ (ref.null extern)
)
)
(drop
- (loop $loop-in8 (result externref)
- (ref.null)
+ (loop $loop-in11 (result funcref)
+ (local.get $local_funcref)
)
)
(drop
- (loop $loop-in9 (result funcref)
- (local.get $local_funcref)
+ (loop $loop-in12 (result funcref)
+ (global.get $global_funcref)
)
)
(drop
- (loop $loop-in10 (result funcref)
- (ref.null)
+ (loop $loop-in13 (result funcref)
+ (ref.null func)
)
)
(drop
- (loop $loop-in11 (result exnref)
- (local.get $local_exnref)
+ (loop $loop-in14 (result funcref)
+ (ref.func $foo)
)
)
(drop
- (loop $loop-in12 (result exnref)
- (ref.null)
+ (loop $loop-in15 (result exnref)
+ (local.get $local_exnref)
)
)
(drop
- (loop $loop-in13 (result nullref)
- (ref.null)
+ (loop $loop-in16 (result exnref)
+ (global.get $global_exnref)
)
)
(drop
- (if (result externref)
- (i32.const 1)
- (local.get $local_externref)
- (local.get $local_exnref)
+ (loop $loop-in17 (result exnref)
+ (ref.null exn)
)
)
(drop
(if (result externref)
(i32.const 1)
- (ref.func $foo)
- (ref.null)
+ (local.get $local_externref)
+ (ref.null extern)
)
)
(drop
(if (result funcref)
(i32.const 1)
- (ref.func $foo)
- (ref.null)
+ (local.get $local_funcref)
+ (ref.null func)
)
)
(drop
(if (result exnref)
(i32.const 1)
(local.get $local_exnref)
- (ref.null)
- )
- )
- (drop
- (if (result nullref)
- (i32.const 1)
- (local.get $local_nullref)
- (ref.null)
+ (ref.null exn)
)
)
(drop
@@ -313,20 +320,10 @@
(local.get $local_externref)
)
(catch
- (exnref.pop)
- )
- )
- )
- (drop
- (try (result externref)
- (do
- (ref.func $foo)
- )
- (catch
(drop
(exnref.pop)
)
- (ref.null)
+ (ref.null extern)
)
)
)
@@ -339,14 +336,14 @@
(drop
(exnref.pop)
)
- (ref.null)
+ (ref.null func)
)
)
)
(drop
(try (result exnref)
(do
- (ref.null)
+ (ref.null exn)
)
(catch
(exnref.pop)
@@ -354,77 +351,66 @@
)
)
(drop
- (try (result nullref)
- (do
- (ref.null)
- )
- (catch
- (drop
- (exnref.pop)
- )
- (ref.null)
- )
+ (select (result externref)
+ (local.get $local_externref)
+ (ref.null extern)
+ (i32.const 1)
)
)
(drop
- (select (result externref)
- (local.get $local_externref)
- (ref.func $foo)
+ (select (result funcref)
+ (local.get $local_funcref)
+ (ref.null func)
(i32.const 1)
)
)
(drop
- (select (result externref)
+ (select (result exnref)
(local.get $local_exnref)
- (local.get $local_externref)
+ (ref.null exn)
(i32.const 1)
)
)
(drop
- (select (result externref)
- (local.get $local_externref)
- (ref.null)
+ (select
+ (i32.const 0)
+ (i32.const 2)
(i32.const 1)
)
)
(drop
- (select (result externref)
- (ref.null)
- (ref.func $foo)
- (i32.const 1)
+ (ref.is_null
+ (local.get $local_externref)
)
)
(drop
- (select (result funcref)
- (ref.func $foo)
- (ref.null)
- (i32.const 1)
+ (ref.is_null
+ (global.get $global_externref)
)
)
(drop
- (select (result exnref)
- (ref.null)
- (local.get $local_exnref)
- (i32.const 1)
+ (ref.is_null
+ (ref.null extern)
)
)
(drop
- (select (result nullref)
- (ref.null)
- (ref.null)
- (i32.const 1)
+ (ref.is_null
+ (local.get $local_funcref)
)
)
(drop
- (select
- (i32.const 0)
- (i32.const 2)
- (i32.const 1)
+ (ref.is_null
+ (global.get $global_funcref)
)
)
(drop
(ref.is_null
- (local.get $local_externref)
+ (ref.null func)
+ )
+ )
+ (drop
+ (ref.is_null
+ (ref.func $foo)
)
)
(drop
@@ -434,86 +420,85 @@
)
(drop
(ref.is_null
- (ref.func $foo)
+ (global.get $global_exnref)
)
)
(drop
(ref.is_null
- (ref.null)
+ (ref.null exn)
)
)
)
- (func $return_externref (result externref)
+ (func $return_externref_local (result externref)
(local $local_externref externref)
(local.get $local_externref)
)
- (func $return_externref2 (result externref)
- (ref.func $foo)
+ (func $return_externref_global (result externref)
+ (global.get $global_externref)
)
- (func $return_externref3 (result externref)
- (local $local_exnref exnref)
- (local.get $local_exnref)
+ (func $return_externref_null (result externref)
+ (ref.null extern)
+ )
+ (func $return_funcref_local (result funcref)
+ (local $local_funcref funcref)
+ (local.get $local_funcref)
)
- (func $return_externref4 (result externref)
- (ref.null)
+ (func $return_funcref_global (result funcref)
+ (global.get $global_funcref)
)
- (func $return_funcref (result funcref)
- (ref.func $foo)
+ (func $return_funcref_null (result funcref)
+ (ref.null func)
)
- (func $return_funcref2 (result funcref)
- (ref.null)
+ (func $return_funcref_func (result funcref)
+ (ref.func $foo)
)
- (func $return_exnref (result exnref)
+ (func $return_exnref_local (result exnref)
(local $local_exnref exnref)
(local.get $local_exnref)
)
- (func $return_exnref2 (result exnref)
- (ref.null)
+ (func $return_exnref_global (result exnref)
+ (global.get $global_exnref)
)
- (func $return_nullref (result nullref)
- (local $local_nullref nullref)
- (local.get $local_nullref)
+ (func $return_exnref_null (result exnref)
+ (ref.null exn)
)
- (func $return_externref_returns (result externref)
+ (func $returns_externref (result externref)
(local $local_externref externref)
- (local $local_exnref exnref)
(return
(local.get $local_externref)
)
(return
- (local.get $local_exnref)
+ (global.get $global_externref)
)
(return
- (ref.func $foo)
+ (ref.null extern)
)
+ )
+ (func $returns_funcref (result funcref)
+ (local $local_funcref funcref)
(return
- (ref.null)
+ (local.get $local_funcref)
+ )
+ (return
+ (global.get $global_funcref)
)
- )
- (func $return_funcref_returns (result funcref)
(return
(ref.func $foo)
)
(return
- (ref.null)
+ (ref.null func)
)
)
- (func $return_exnref_returns (result exnref)
+ (func $returns_exnref (result exnref)
(local $local_exnref exnref)
(return
(local.get $local_exnref)
)
(return
- (ref.null)
- )
- )
- (func $return_nullref_returns (result nullref)
- (local $local_nullref nullref)
- (return
- (local.get $local_nullref)
+ (global.get $global_exnref)
)
(return
- (ref.null)
+ (ref.null exn)
)
)
)