summaryrefslogtreecommitdiff
path: root/test/typed-function-references.wast
diff options
context:
space:
mode:
Diffstat (limited to 'test/typed-function-references.wast')
-rw-r--r--test/typed-function-references.wast41
1 files changed, 41 insertions, 0 deletions
diff --git a/test/typed-function-references.wast b/test/typed-function-references.wast
index 1057d4487..40eae6ebd 100644
--- a/test/typed-function-references.wast
+++ b/test/typed-function-references.wast
@@ -41,4 +41,45 @@
)
)
)
+ (func $ref-types-first
+ ;; 6 reference types and 3 MVP types. The binary format should emit all the
+ ;; reference types first since a reference type appears first. In addition,
+ ;; types should be emitted in blocks there, that is, locals of identical
+ ;; types should be adjacent.
+ (local $r1 (ref null $mixed_results))
+ (local $r2 (ref null $mixed_results))
+ (local $i1 i32)
+ (local $r3 anyref)
+ (local $i2 i64)
+ (local $r4 anyref)
+ (local $i3 i64)
+ (local $r5 anyref)
+ (local $r6 funcref)
+ )
+ (func $mvp-types-first
+ ;; Reversed from before, now an MVP type appears first, so they should all
+ ;; be before reference types in the binary format.
+ (local $i1 i32) ;; only this local was moved up.
+ (local $r1 (ref null $mixed_results))
+ (local $r2 (ref null $mixed_results))
+ (local $r3 anyref)
+ (local $i2 i64)
+ (local $r4 anyref)
+ (local $i3 i64)
+ (local $r5 anyref)
+ (local $r6 funcref)
+ )
+ (func $mvp-types-first-param (param $r0 (ref null $mixed_results))
+ ;; As before, but now there is a reference type *parameter*. We should
+ ;; ignore that and sort as in the last function.
+ (local $i1 i32) ;; only this local was moved up.
+ (local $r1 (ref null $mixed_results))
+ (local $r2 (ref null $mixed_results))
+ (local $r3 anyref)
+ (local $i2 i64)
+ (local $r4 anyref)
+ (local $i3 i64)
+ (local $r5 anyref)
+ (local $r6 funcref)
+ )
)