diff options
Diffstat (limited to 'test/reference-types.wast')
-rw-r--r-- | test/reference-types.wast | 186 |
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)) |