diff options
Diffstat (limited to 'test/typed-function-references.wast')
-rw-r--r-- | test/typed-function-references.wast | 41 |
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) + ) ) |