;; RUN: wasm-fuzz-types -v --seed=2 | filecheck %s

;; CHECK:      Running with seed 2
;; CHECK-NEXT: Built 20 types:
;; CHECK-NEXT: (type $0 (shared (struct)))
;; CHECK-NEXT: (rec
;; CHECK-NEXT:  (type $1 (array (ref $2)))
;; CHECK-NEXT:  (type $2 (sub (shared (array (mut i16)))))
;; CHECK-NEXT:  (type $3 (sub (shared (array i32))))
;; CHECK-NEXT:  (type $4 (sub (descriptor $5) (struct (field (mut (ref $0))))))
;; CHECK-NEXT:  (type $5 (sub (describes $4) (struct (field f64) (field (mut i64)))))
;; CHECK-NEXT:  (type $6 (sub (array v128)))
;; CHECK-NEXT:  (type $7 (shared (struct (field f32) (field (mut (ref $0))))))
;; CHECK-NEXT:  (type $8 (sub (shared (struct (field f64) (field (mut (ref (shared struct)))) (field (mut f64)) (field i16) (field i32) (field i64)))))
;; CHECK-NEXT: )
;; CHECK-NEXT: (rec
;; CHECK-NEXT:  (type $9 (descriptor $12) (struct (field i64) (field i16)))
;; CHECK-NEXT:  (type $10 (array (mut (ref null $5))))
;; CHECK-NEXT:  (type $11 (sub (shared (func (param (ref $7) f64 (ref $9)) (result (ref null $10))))))
;; CHECK-NEXT:  (type $12 (sub (describes $9) (descriptor $13) (struct (field (ref (shared any))) (field (mut (ref extern))) (field v128) (field (ref null $17)))))
;; CHECK-NEXT:  (type $13 (sub (describes $12) (descriptor $17) (struct (field externref) (field (mut i8)) (field (mut i32)) (field (mut f32)) (field i16) (field (mut (ref null $6))))))
;; CHECK-NEXT:  (type $14 (sub (func (result i64))))
;; CHECK-NEXT:  (type $15 (sub (shared (func))))
;; CHECK-NEXT:  (type $16 (shared (func (result (ref null $0)))))
;; CHECK-NEXT:  (type $17 (sub (describes $13) (struct (field (ref extern)))))
;; CHECK-NEXT:  (type $18 (sub (func (param v128 (ref null $10)))))
;; CHECK-NEXT:  (type $19 (sub final $11 (shared (func (param (ref null (shared any)) f64 (ref any)) (result (ref $10))))))
;; CHECK-NEXT: )
;; CHECK-NEXT: 
;; CHECK-NEXT: Inhabitable types:
;; CHECK-NEXT: 
;; CHECK-NEXT: Built 20 types:
;; CHECK-NEXT: (type $0 (shared (struct)))
;; CHECK-NEXT: (rec
;; CHECK-NEXT:  (type $1 (array (ref $2)))
;; CHECK-NEXT:  (type $2 (sub (shared (array (mut i16)))))
;; CHECK-NEXT:  (type $3 (sub (shared (array i32))))
;; CHECK-NEXT:  (type $4 (sub (descriptor $5) (struct (field (mut (ref $0))))))
;; CHECK-NEXT:  (type $5 (sub (describes $4) (struct (field f64) (field (mut i64)))))
;; CHECK-NEXT:  (type $6 (sub (array v128)))
;; CHECK-NEXT:  (type $7 (shared (struct (field f32) (field (mut (ref $0))))))
;; CHECK-NEXT:  (type $8 (sub (shared (struct (field f64) (field (mut (ref (shared struct)))) (field (mut f64)) (field i16) (field i32) (field i64)))))
;; CHECK-NEXT: )
;; CHECK-NEXT: (rec
;; CHECK-NEXT:  (type $9 (descriptor $12) (struct (field i64) (field i16)))
;; CHECK-NEXT:  (type $10 (array (mut (ref null $5))))
;; CHECK-NEXT:  (type $11 (sub (shared (func (param (ref $7) f64 (ref $9)) (result (ref null $10))))))
;; CHECK-NEXT:  (type $12 (sub (describes $9) (descriptor $13) (struct (field (ref (shared any))) (field (mut externref)) (field v128) (field (ref null $17)))))
;; CHECK-NEXT:  (type $13 (sub (describes $12) (descriptor $17) (struct (field externref) (field (mut i8)) (field (mut i32)) (field (mut f32)) (field i16) (field (mut (ref null $6))))))
;; CHECK-NEXT:  (type $14 (sub (func (result i64))))
;; CHECK-NEXT:  (type $15 (sub (shared (func))))
;; CHECK-NEXT:  (type $16 (shared (func (result (ref null $0)))))
;; CHECK-NEXT:  (type $17 (sub (describes $13) (struct (field externref))))
;; CHECK-NEXT:  (type $18 (sub (func (param v128 (ref null $10)))))
;; CHECK-NEXT:  (type $19 (sub final $11 (shared (func (param (ref null (shared any)) f64 (ref any)) (result (ref $10))))))
;; CHECK-NEXT: )
