summaryrefslogtreecommitdiff
path: root/test/reference-types.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/reference-types.wast')
-rw-r--r--test/reference-types.wast186
1 files changed, 89 insertions, 97 deletions
diff --git a/test/reference-types.wast b/test/reference-types.wast
index afdb38c89..a7f84a93c 100644
--- a/test/reference-types.wast
+++ b/test/reference-types.wast
@@ -1,51 +1,43 @@
-;; reftype :: externref | funcref
-
-;; NOTE: the subtyping relationship has been removed from the reference-types proposal but an
-;; `--enable-anyref` feature flag is present in Binaryen that we use below to test subtyping.
-;;
-;; reftype :: reftype | anyref
-;; reftype <: anyref
-
(module
- (type $sig_externref (func (param externref)))
+ (type $sig_eqref (func (param eqref)))
(type $sig_funcref (func (param funcref)))
(type $sig_anyref (func (param anyref)))
- (func $take_externref (param externref))
+ (func $take_eqref (param eqref))
(func $take_funcref (param funcref))
(func $take_anyref (param anyref))
(func $foo)
- (table funcref (elem $take_externref $take_funcref $take_anyref))
+ (table funcref (elem $take_eqref $take_funcref $take_anyref))
(elem declare func $ref-taken-but-not-in-table)
- (import "env" "import_func" (func $import_func (param externref) (result funcref)))
- (import "env" "import_global" (global $import_global externref))
- (export "export_func" (func $import_func (param externref) (result funcref)))
+ (import "env" "import_func" (func $import_func (param eqref) (result funcref)))
+ (import "env" "import_global" (global $import_global eqref))
+ (export "export_func" (func $import_func (param eqref) (result funcref)))
(export "export_global" (global $import_global))
;; Test global initializer expressions
- (global $global_externref (mut externref) (ref.null extern))
+ (global $global_eqref (mut eqref) (ref.null eq))
(global $global_funcref (mut funcref) (ref.null func))
(global $global_funcref_func (mut funcref) (ref.func $foo))
(global $global_anyref (mut anyref) (ref.null any))
;; Test subtype relationship in global initializer expressions
- (global $global_anyref2 (mut anyref) (ref.null extern))
+ (global $global_anyref2 (mut anyref) (ref.null eq))
(global $global_anyref3 (mut anyref) (ref.null func))
(global $global_anyref4 (mut anyref) (ref.func $foo))
(tag $e-i32 (param i32))
(func $test
- (local $local_externref externref)
+ (local $local_eqref eqref)
(local $local_funcref funcref)
(local $local_anyref anyref)
;; Test types for local.get/set
- (local.set $local_externref (local.get $local_externref))
- (local.set $local_externref (global.get $global_externref))
- (local.set $local_externref (ref.null extern))
+ (local.set $local_eqref (local.get $local_eqref))
+ (local.set $local_eqref (global.get $global_eqref))
+ (local.set $local_eqref (ref.null eq))
(local.set $local_funcref (local.get $local_funcref))
(local.set $local_funcref (global.get $global_funcref))
(local.set $local_funcref (ref.null func))
@@ -55,18 +47,18 @@
(local.set $local_anyref (ref.null any))
;; Test subtype relationship for local.set
- (local.set $local_anyref (local.get $local_externref))
- (local.set $local_anyref (global.get $global_externref))
- (local.set $local_anyref (ref.null extern))
+ (local.set $local_anyref (local.get $local_eqref))
+ (local.set $local_anyref (global.get $global_eqref))
+ (local.set $local_anyref (ref.null eq))
(local.set $local_anyref (local.get $local_funcref))
(local.set $local_anyref (global.get $global_funcref))
(local.set $local_anyref (ref.null func))
(local.set $local_anyref (ref.func $foo))
;; Test types for global.get/set
- (global.set $global_externref (global.get $global_externref))
- (global.set $global_externref (local.get $local_externref))
- (global.set $global_externref (ref.null extern))
+ (global.set $global_eqref (global.get $global_eqref))
+ (global.set $global_eqref (local.get $local_eqref))
+ (global.set $global_eqref (ref.null eq))
(global.set $global_funcref (global.get $global_funcref))
(global.set $global_funcref (local.get $local_funcref))
(global.set $global_funcref (ref.null func))
@@ -76,18 +68,18 @@
(global.set $global_anyref (ref.null any))
;; Test subtype relationship for global.set
- (global.set $global_anyref (global.get $global_externref))
- (global.set $global_anyref (local.get $local_externref))
- (global.set $global_anyref (ref.null extern))
+ (global.set $global_anyref (global.get $global_eqref))
+ (global.set $global_anyref (local.get $local_eqref))
+ (global.set $global_anyref (ref.null eq))
(global.set $global_anyref (global.get $global_funcref))
(global.set $global_anyref (local.get $local_funcref))
(global.set $global_anyref (ref.null func))
(global.set $global_anyref (ref.func $foo))
;; Test function call params
- (call $take_externref (local.get $local_externref))
- (call $take_externref (global.get $global_externref))
- (call $take_externref (ref.null extern))
+ (call $take_eqref (local.get $local_eqref))
+ (call $take_eqref (global.get $global_eqref))
+ (call $take_eqref (ref.null eq))
(call $take_funcref (local.get $local_funcref))
(call $take_funcref (global.get $global_funcref))
(call $take_funcref (ref.null func))
@@ -97,18 +89,18 @@
(call $take_anyref (ref.null any))
;; Test subtype relationship for function call params
- (call $take_anyref (local.get $local_externref))
- (call $take_anyref (global.get $global_externref))
- (call $take_anyref (ref.null extern))
+ (call $take_anyref (local.get $local_eqref))
+ (call $take_anyref (global.get $global_eqref))
+ (call $take_anyref (ref.null eq))
(call $take_anyref (local.get $local_funcref))
(call $take_anyref (global.get $global_funcref))
(call $take_anyref (ref.null func))
(call $take_anyref (ref.func $foo))
;; Test call_indirect params
- (call_indirect (type $sig_externref) (local.get $local_externref) (i32.const 0))
- (call_indirect (type $sig_externref) (global.get $global_externref) (i32.const 0))
- (call_indirect (type $sig_externref) (ref.null extern) (i32.const 0))
+ (call_indirect (type $sig_eqref) (local.get $local_eqref) (i32.const 0))
+ (call_indirect (type $sig_eqref) (global.get $global_eqref) (i32.const 0))
+ (call_indirect (type $sig_eqref) (ref.null eq) (i32.const 0))
(call_indirect (type $sig_funcref) (local.get $local_funcref) (i32.const 1))
(call_indirect (type $sig_funcref) (global.get $global_funcref) (i32.const 1))
(call_indirect (type $sig_funcref) (ref.null func) (i32.const 1))
@@ -118,9 +110,9 @@
(call_indirect (type $sig_anyref) (ref.null any) (i32.const 3))
;; Test subtype relationship for call_indirect params
- (call_indirect (type $sig_anyref) (local.get $local_externref) (i32.const 3))
- (call_indirect (type $sig_anyref) (global.get $global_externref) (i32.const 3))
- (call_indirect (type $sig_anyref) (ref.null extern) (i32.const 3))
+ (call_indirect (type $sig_anyref) (local.get $local_eqref) (i32.const 3))
+ (call_indirect (type $sig_anyref) (global.get $global_eqref) (i32.const 3))
+ (call_indirect (type $sig_anyref) (ref.null eq) (i32.const 3))
(call_indirect (type $sig_anyref) (local.get $local_funcref) (i32.const 3))
(call_indirect (type $sig_anyref) (global.get $global_funcref) (i32.const 3))
(call_indirect (type $sig_anyref) (ref.null func) (i32.const 3))
@@ -128,18 +120,18 @@
;; Test block return type
(drop
- (block (result externref)
- (br_if 0 (local.get $local_externref) (i32.const 1))
+ (block (result eqref)
+ (br_if 0 (local.get $local_eqref) (i32.const 1))
)
)
(drop
- (block (result externref)
- (br_if 0 (global.get $global_externref) (i32.const 1))
+ (block (result eqref)
+ (br_if 0 (global.get $global_eqref) (i32.const 1))
)
)
(drop
- (block (result externref)
- (br_if 0 (ref.null extern) (i32.const 1))
+ (block (result eqref)
+ (br_if 0 (ref.null eq) (i32.const 1))
)
)
(drop
@@ -181,7 +173,7 @@
;; Test subtype relationship for block return type
(drop
(block (result anyref)
- (br_if 0 (local.get $local_externref) (i32.const 1))
+ (br_if 0 (local.get $local_eqref) (i32.const 1))
)
)
(drop
@@ -191,7 +183,7 @@
)
(drop
(block (result anyref)
- (br_if 0 (ref.null extern) (i32.const 1))
+ (br_if 0 (ref.null eq) (i32.const 1))
)
)
(drop
@@ -207,18 +199,18 @@
;; Test loop return type
(drop
- (loop (result externref)
- (local.get $local_externref)
+ (loop (result eqref)
+ (local.get $local_eqref)
)
)
(drop
- (loop (result externref)
- (global.get $global_externref)
+ (loop (result eqref)
+ (global.get $global_eqref)
)
)
(drop
- (loop (result externref)
- (ref.null extern)
+ (loop (result eqref)
+ (ref.null eq)
)
)
(drop
@@ -260,17 +252,17 @@
;; Test subtype relationship for loop return type
(drop
(loop (result anyref)
- (local.get $local_externref)
+ (local.get $local_eqref)
)
)
(drop
(loop (result anyref)
- (global.get $global_externref)
+ (global.get $global_eqref)
)
)
(drop
(loop (result anyref)
- (ref.null extern)
+ (ref.null eq)
)
)
(drop
@@ -296,10 +288,10 @@
;; Test if return type
(drop
- (if (result externref)
+ (if (result eqref)
(i32.const 1)
- (local.get $local_externref)
- (ref.null extern)
+ (local.get $local_eqref)
+ (ref.null eq)
)
)
(drop
@@ -321,14 +313,14 @@
(drop
(if (result anyref)
(i32.const 1)
- (local.get $local_externref)
+ (local.get $local_eqref)
(local.get $local_funcref)
)
)
(drop
(if (result anyref)
(i32.const 1)
- (ref.null extern)
+ (ref.null eq)
(ref.null func)
)
)
@@ -336,19 +328,19 @@
(if (result anyref)
(i32.const 1)
(ref.func $foo)
- (ref.null extern)
+ (ref.null eq)
)
)
;; Test try return type
(drop
- (try (result externref)
+ (try (result eqref)
(do
- (local.get $local_externref)
+ (local.get $local_eqref)
)
(catch $e-i32
(drop (pop i32))
- (ref.null extern)
+ (ref.null eq)
)
)
)
@@ -368,7 +360,7 @@
(drop
(try (result anyref)
(do
- (local.get $local_externref)
+ (local.get $local_eqref)
)
(catch $e-i32
(drop (pop i32))
@@ -383,16 +375,16 @@
)
(catch $e-i32
(drop (pop i32))
- (local.get $local_externref)
+ (local.get $local_eqref)
)
)
)
;; Test typed select
(drop
- (select (result externref)
- (local.get $local_externref)
- (ref.null extern)
+ (select (result eqref)
+ (local.get $local_eqref)
+ (ref.null eq)
(i32.const 1)
)
)
@@ -414,7 +406,7 @@
;; Test subtype relationship for typed select
(drop
(select (result anyref)
- (local.get $local_externref)
+ (local.get $local_eqref)
(local.get $local_funcref)
(i32.const 1)
)
@@ -422,15 +414,15 @@
(drop
(select (result anyref)
(local.get $local_funcref)
- (local.get $local_externref)
+ (local.get $local_eqref)
(i32.const 1)
)
)
;; ref.is_null takes any reference types
- (drop (ref.is_null (local.get $local_externref)))
- (drop (ref.is_null (global.get $global_externref)))
- (drop (ref.is_null (ref.null extern)))
+ (drop (ref.is_null (local.get $local_eqref)))
+ (drop (ref.is_null (global.get $global_eqref)))
+ (drop (ref.is_null (ref.null eq)))
(drop (ref.is_null (local.get $local_funcref)))
(drop (ref.is_null (global.get $global_funcref)))
(drop (ref.is_null (ref.null func)))
@@ -441,15 +433,15 @@
)
;; Test function return type
- (func $return_externref_local (result externref)
- (local $local_externref externref)
- (local.get $local_externref)
+ (func $return_eqref_local (result eqref)
+ (local $local_eqref eqref)
+ (local.get $local_eqref)
)
- (func $return_externref_global (result externref)
- (global.get $global_externref)
+ (func $return_eqref_global (result eqref)
+ (global.get $global_eqref)
)
- (func $return_externref_null (result externref)
- (ref.null extern)
+ (func $return_eqref_null (result eqref)
+ (ref.null eq)
)
(func $return_funcref_local (result funcref)
(local $local_funcref funcref)
@@ -477,14 +469,14 @@
;; Test subtype relationship in function return type
(func $return_anyref2 (result anyref)
- (local $local_externref externref)
- (local.get $local_externref)
+ (local $local_eqref eqref)
+ (local.get $local_eqref)
)
(func $return_anyref3 (result anyref)
- (global.get $global_externref)
+ (global.get $global_eqref)
)
(func $return_anyref4 (result anyref)
- (ref.null extern)
+ (ref.null eq)
)
(func $return_anyref5 (result anyref)
(local $local_funcref funcref)
@@ -501,11 +493,11 @@
)
;; Test returns
- (func $returns_externref (result externref)
- (local $local_externref externref)
- (return (local.get $local_externref))
- (return (global.get $global_externref))
- (return (ref.null extern))
+ (func $returns_eqref (result eqref)
+ (local $local_eqref eqref)
+ (return (local.get $local_eqref))
+ (return (global.get $global_eqref))
+ (return (ref.null eq))
)
(func $returns_funcref (result funcref)
(local $local_funcref funcref)
@@ -523,11 +515,11 @@
;; Test subtype relationship in returns
(func $returns_anyref2 (result anyref)
- (local $local_externref externref)
+ (local $local_eqref eqref)
(local $local_funcref funcref)
- (return (local.get $local_externref))
- (return (global.get $global_externref))
- (return (ref.null extern))
+ (return (local.get $local_eqref))
+ (return (global.get $global_eqref))
+ (return (ref.null eq))
(return (local.get $local_funcref))
(return (global.get $global_funcref))
(return (ref.func $foo))