diff options
Diffstat (limited to 'test')
-rw-r--r-- | test/lit/fuzz-types/isorecursive.test | 20 | ||||
-rw-r--r-- | test/lit/fuzz-types/nominal.test | 24 | ||||
-rw-r--r-- | test/lit/isorecursive-good.wast | 38 | ||||
-rw-r--r-- | test/lit/recursive-types.wast | 19 |
4 files changed, 65 insertions, 36 deletions
diff --git a/test/lit/fuzz-types/isorecursive.test b/test/lit/fuzz-types/isorecursive.test index f670104f5..4ba564193 100644 --- a/test/lit/fuzz-types/isorecursive.test +++ b/test/lit/fuzz-types/isorecursive.test @@ -1,7 +1,7 @@ ;; RUN: wasm-fuzz-types --hybrid -v --seed=1 | filecheck %s ;; CHECK: (type $0 (struct)) -;; CHECK-NEXT: (rec +;; CHECK-NEXT: (rec ;; CHECK-NEXT: (type $1 (struct)) ;; CHECK-NEXT: (type $2 (array i16)) ;; CHECK-NEXT: (type $3 (func)) @@ -13,20 +13,20 @@ ;; CHECK-NEXT: (type $7 (func (param f64) (result i64))) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (rec -;; CHECK-NEXT: (type $8 (struct_subtype $1)) -;; CHECK-NEXT: (type $9 (func_subtype (param (ref $5) i32 i64 f64 f64 (ref eq) v128) (result i64) $4)) +;; CHECK-NEXT: (type $8 (struct_subtype (field f64 (ref $2) f64 (mut (ref null $9))) $1)) +;; CHECK-NEXT: (type $9 (func_subtype (param (ref array) i32 i64 f64 f64 anyref v128) (result i64) $4)) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (rec -;; CHECK-NEXT: (type $10 (func_subtype (param (ref $5) i32 i64 f64 f64 (ref eq) v128) (result i64) $9)) +;; CHECK-NEXT: (type $10 (func_subtype (param (ref eq) i32 i64 f64 f64 anyref v128) (result i64) $9)) ;; CHECK-NEXT: (type $11 (array_subtype (mut funcref) $6)) -;; CHECK-NEXT: (type $12 (array f64)) +;; CHECK-NEXT: (type $12 (array nullref)) ;; CHECK-NEXT: (type $13 none) -;; CHECK-NEXT: (type $14 (array arrayref)) -;; CHECK-NEXT: (type $15 (array (mut i8))) +;; CHECK-NEXT: (type $14 (array (ref $6))) +;; CHECK-NEXT: (type $15 (array i32)) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (rec -;; CHECK-NEXT: (type $16 (array_subtype f64 $12)) -;; CHECK-NEXT: (type $17 (func (param (ref $5) (ref null $3) (ref null $0) (ref null $2) (ref $8) v128) (result v128))) +;; CHECK-NEXT: (type $16 (array_subtype (ref none) $12)) +;; CHECK-NEXT: (type $17 (func (param (ref null $9)) (result f32 structref))) ;; CHECK-NEXT: (type $18 none) ;; CHECK-NEXT: ) -;; CHECK-NEXT: (type $19 (func_subtype (param (ref $5) i32 i64 f64 f64 (ref eq) v128) (result i64) $9)) +;; CHECK-NEXT: (type $19 (func_subtype (param (ref any) i32 i64 f64 f64 anyref v128) (result i64) $9)) diff --git a/test/lit/fuzz-types/nominal.test b/test/lit/fuzz-types/nominal.test index c127105bb..27d6a969c 100644 --- a/test/lit/fuzz-types/nominal.test +++ b/test/lit/fuzz-types/nominal.test @@ -4,19 +4,19 @@ ;; CHECK-NEXT: (type $1 (func (param f64 v128))) ;; CHECK-NEXT: (type $2 (struct (field (mut (ref null $19)) f64 arrayref))) ;; CHECK-NEXT: (type $3 (struct_subtype (field (mut i16) (ref i31) f32 f32 f64) $0)) -;; CHECK-NEXT: (type $4 (struct (field (mut (ref null $11)) (mut i8)))) +;; CHECK-NEXT: (type $4 (struct)) ;; CHECK-NEXT: (type $5 none) -;; CHECK-NEXT: (type $6 (array (ref null $18))) +;; CHECK-NEXT: (type $6 (array (mut eqref))) ;; CHECK-NEXT: (type $7 (func_subtype (param f64 v128) $1)) -;; CHECK-NEXT: (type $8 (array (mut (ref null $19)))) -;; CHECK-NEXT: (type $9 (array (mut f64))) -;; CHECK-NEXT: (type $10 (struct_subtype (field (mut i16) i31ref f32 f32 f64) $0)) -;; CHECK-NEXT: (type $11 (func (param i32 f64) (result (ref null $8)))) +;; CHECK-NEXT: (type $8 (array anyref)) +;; CHECK-NEXT: (type $9 (array f32)) +;; CHECK-NEXT: (type $10 (struct_subtype (field (mut i16) (ref i31) f32 f32 f64) $0)) +;; CHECK-NEXT: (type $11 (func (result f64))) ;; CHECK-NEXT: (type $12 (func_subtype (param f64 v128) $1)) ;; CHECK-NEXT: (type $13 (func_subtype (param f64 v128) $12)) -;; CHECK-NEXT: (type $14 (func_subtype (param i32 f64) (result (ref null $8)) $11)) -;; CHECK-NEXT: (type $15 (func_subtype (param i32 f64) (result (ref null $8)) $14)) -;; CHECK-NEXT: (type $16 (func (result v128))) -;; CHECK-NEXT: (type $17 (array f32)) -;; CHECK-NEXT: (type $18 (array i64)) -;; CHECK-NEXT: (type $19 (struct_subtype (field (mut i16) (ref none) f32 f32 f64 (ref $2)) $0)) +;; CHECK-NEXT: (type $14 (func_subtype (result f64) $11)) +;; CHECK-NEXT: (type $15 (func_subtype (result f64) $14)) +;; CHECK-NEXT: (type $16 (func (param (ref struct)) (result structref))) +;; CHECK-NEXT: (type $17 (array (mut (ref $2)))) +;; CHECK-NEXT: (type $18 (array (ref $10))) +;; CHECK-NEXT: (type $19 (struct_subtype (field (mut i16) (ref i31) f32 f32 f64 (mut f32)) $0)) diff --git a/test/lit/isorecursive-good.wast b/test/lit/isorecursive-good.wast index 350aabcf9..c7c9569eb 100644 --- a/test/lit/isorecursive-good.wast +++ b/test/lit/isorecursive-good.wast @@ -5,11 +5,13 @@ ;; RUN: wasm-opt %s -all --nominal -S -o - | filecheck %s --check-prefix NOMINAL (module - - (rec ;; HYBRID: (rec ;; HYBRID-NEXT: (type $super-struct (struct (field i32))) + ;; NOMINAL: (type $super-array (array (ref $super-struct))) + + ;; NOMINAL: (type $sub-array (array_subtype (ref $sub-struct) $super-array)) + ;; NOMINAL: (type $super-struct (struct (field i32))) (type $super-struct (struct i32)) ;; HYBRID: (type $sub-struct (struct_subtype (field i32) (field i64) $super-struct)) @@ -20,13 +22,21 @@ (rec ;; HYBRID: (rec ;; HYBRID-NEXT: (type $super-array (array (ref $super-struct))) - ;; NOMINAL: (type $super-array (array (ref $super-struct))) (type $super-array (array (ref $super-struct))) ;; HYBRID: (type $sub-array (array_subtype (ref $sub-struct) $super-array)) - ;; NOMINAL: (type $sub-array (array_subtype (ref $sub-struct) $super-array)) (type $sub-array (array_subtype (ref $sub-struct) $super-array)) ) + (rec + ;; HYBRID: (rec + ;; HYBRID-NEXT: (type $super-func (func (param (ref $sub-array)) (result (ref $super-array)))) + ;; NOMINAL: (type $super-func (func (param (ref $sub-array)) (result (ref $super-array)))) + (type $super-func (func (param (ref $sub-array)) (result (ref $super-array)))) + ;; HYBRID: (type $sub-func (func_subtype (param (ref $super-array)) (result (ref $sub-array)) $super-func)) + ;; NOMINAL: (type $sub-func (func_subtype (param (ref $super-array)) (result (ref $sub-array)) $super-func)) + (type $sub-func (func_subtype (param (ref $super-array)) (result (ref $sub-array)) $super-func)) + ) + ;; HYBRID: (func $make-super-struct (type $none_=>_ref|$super-struct|) (result (ref $super-struct)) ;; HYBRID-NEXT: (call $make-sub-struct) ;; HYBRID-NEXT: ) @@ -66,4 +76,24 @@ (func $make-sub-array (result (ref $sub-array)) (unreachable) ) + + ;; HYBRID: (func $make-super-func (type $none_=>_ref|$super-func|) (result (ref $super-func)) + ;; HYBRID-NEXT: (call $make-sub-func) + ;; HYBRID-NEXT: ) + ;; NOMINAL: (func $make-super-func (type $none_=>_ref|$super-func|) (result (ref $super-func)) + ;; NOMINAL-NEXT: (call $make-sub-func) + ;; NOMINAL-NEXT: ) + (func $make-super-func (result (ref $super-func)) + (call $make-sub-func) + ) + + ;; HYBRID: (func $make-sub-func (type $none_=>_ref|$sub-func|) (result (ref $sub-func)) + ;; HYBRID-NEXT: (unreachable) + ;; HYBRID-NEXT: ) + ;; NOMINAL: (func $make-sub-func (type $none_=>_ref|$sub-func|) (result (ref $sub-func)) + ;; NOMINAL-NEXT: (unreachable) + ;; NOMINAL-NEXT: ) + (func $make-sub-func (result (ref $sub-func)) + (unreachable) + ) ) diff --git a/test/lit/recursive-types.wast b/test/lit/recursive-types.wast index 30fd13db9..883756f7a 100644 --- a/test/lit/recursive-types.wast +++ b/test/lit/recursive-types.wast @@ -8,16 +8,15 @@ (type (func (param (ref null 1)) (result (ref null 1)))) (type (func (param (ref null 0)) (result (ref null 1)))) (rec - (type (func (param (ref null 3)) (result (ref null 4)))) - (type (func (param (ref null 4)) (result (ref null 3)))) - ) - - ;; CHECK: (type $type$0 (func (param (ref null $type$0)) (result (ref null $type$0)))) + ;; CHECK: (type $type$0 (func (param (ref null $type$0)) (result (ref null $type$0)))) - ;; CHECK: (rec - ;; CHECK-NEXT: (type $type$2 (func (param (ref null $type$2)) (result (ref null $type$3)))) + ;; CHECK: (rec + ;; CHECK-NEXT: (type $f3 (func (param (ref null $type$2)) (result (ref null $f3)))) + (type $f3 (func (param (ref null 4)) (result (ref null 3)))) + (type (func_subtype (param (ref null 3)) (result (ref null 4)) $f3)) + ) - ;; CHECK: (type $type$3 (func (param (ref null $type$3)) (result (ref null $type$2)))) + ;; CHECK: (type $type$2 (func_subtype (param (ref null $f3)) (result (ref null $type$2)) $f3)) ;; CHECK: (type $type$1 (func (param (ref null $type$0)) (result (ref null $type$0)))) @@ -42,14 +41,14 @@ (unreachable) ) - ;; CHECK: (func $qux (type $type$2) (param $0 (ref null $type$2)) (result (ref null $type$3)) + ;; CHECK: (func $qux (type $f3) (param $0 (ref null $type$2)) (result (ref null $f3)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $qux (type 3) (unreachable) ) - ;; CHECK: (func $quux (type $type$3) (param $0 (ref null $type$3)) (result (ref null $type$2)) + ;; CHECK: (func $quux (type $type$2) (param $0 (ref null $f3)) (result (ref null $type$2)) ;; CHECK-NEXT: (unreachable) ;; CHECK-NEXT: ) (func $quux (type 4) |