Files
binaryen/test/lit/fuzz-types.test
Alon Zakai 7664807c10 [GC][EH] Fuzz exnref in GC structs (#7288)
Most of the work here is avoiding shared and non-nullable exnref in
various places, as we cannot support those in the fuzzer (I don't see
a way to generate shared exnrefs, and non-nullable ones can be
created but not in global places, as the way to create them needs a
block and a try).
2025-02-13 09:07:55 -08:00

61 lines
3.4 KiB
Plaintext

;; RUN: wasm-fuzz-types -v --seed=1 | filecheck %s
;; CHECK: Running with seed 1
;; CHECK-NEXT: Built 20 types:
;; CHECK-NEXT: (rec
;; CHECK-NEXT: (type $0 (sub (struct (field (mut i16)) (field (mut (ref $2))) (field (mut (ref null $2))))))
;; CHECK-NEXT: (type $1 (sub (func (param (ref $1)) (result f64 (ref $0) f32 structref))))
;; CHECK-NEXT: (type $2 (sub (shared (struct (field (mut (ref null (shared extern)))) (field (mut (ref null $2)))))))
;; CHECK-NEXT: (type $3 (sub (shared (struct))))
;; CHECK-NEXT: )
;; CHECK-NEXT: (rec
;; CHECK-NEXT: (type $4 (sub (array i32)))
;; CHECK-NEXT: (type $5 (sub $4 (array i32)))
;; CHECK-NEXT: (type $6 (shared (func (param (ref null $3)) (result i32))))
;; CHECK-NEXT: (type $7 (sub $2 (shared (struct (field (mut (ref null (shared extern)))) (field (mut (ref null $2))) (field (mut (ref null $3))) (field (mut i16)) (field (mut (ref null $7))) (field (mut (ref null $7)))))))
;; CHECK-NEXT: (type $8 (sub $0 (struct (field (mut i16)) (field (mut (ref $2))) (field (mut (ref null $2))))))
;; CHECK-NEXT: )
;; CHECK-NEXT: (rec
;; CHECK-NEXT: (type $9 (shared (array i32)))
;; CHECK-NEXT: (type $10 (sub $5 (array i32)))
;; CHECK-NEXT: (type $11 (func (result i32)))
;; CHECK-NEXT: (type $12 (sub (shared (array (ref $3)))))
;; CHECK-NEXT: (type $13 (sub (shared (func (param (ref null $19) v128) (result (ref null $12))))))
;; CHECK-NEXT: (type $14 (sub final $12 (shared (array (ref $3)))))
;; CHECK-NEXT: (type $15 (sub (shared (func (param i31ref (ref $5)) (result i32)))))
;; CHECK-NEXT: (type $16 (sub $5 (array i32)))
;; CHECK-NEXT: (type $17 (sub (func (result (ref $7)))))
;; CHECK-NEXT: (type $18 (sub (array (mut i8))))
;; CHECK-NEXT: (type $19 (shared (array v128)))
;; CHECK-NEXT: )
;; CHECK-NEXT:
;; CHECK-NEXT: Inhabitable types:
;; CHECK-NEXT:
;; CHECK-NEXT: Built 20 types:
;; CHECK-NEXT: (rec
;; CHECK-NEXT: (type $0 (sub (struct (field (mut i16)) (field (mut (ref $2))) (field (mut (ref null $2))))))
;; CHECK-NEXT: (type $1 (sub (func (param (ref $1)) (result f64 (ref $0) f32 structref))))
;; CHECK-NEXT: (type $2 (sub (shared (struct (field (mut (ref null (shared extern)))) (field (mut (ref null $2)))))))
;; CHECK-NEXT: (type $3 (sub (shared (struct))))
;; CHECK-NEXT: )
;; CHECK-NEXT: (rec
;; CHECK-NEXT: (type $4 (sub (array i32)))
;; CHECK-NEXT: (type $5 (sub $4 (array i32)))
;; CHECK-NEXT: (type $6 (shared (func (param (ref null $3)) (result i32))))
;; CHECK-NEXT: (type $7 (sub $2 (shared (struct (field (mut (ref null (shared extern)))) (field (mut (ref null $2))) (field (mut (ref null $3))) (field (mut i16)) (field (mut (ref null $7))) (field (mut (ref null $7)))))))
;; CHECK-NEXT: (type $8 (sub $0 (struct (field (mut i16)) (field (mut (ref $2))) (field (mut (ref null $2))))))
;; CHECK-NEXT: )
;; CHECK-NEXT: (rec
;; CHECK-NEXT: (type $9 (shared (array i32)))
;; CHECK-NEXT: (type $10 (sub $5 (array i32)))
;; CHECK-NEXT: (type $11 (func (result i32)))
;; CHECK-NEXT: (type $12 (sub (shared (array (ref $3)))))
;; CHECK-NEXT: (type $13 (sub (shared (func (param (ref null $19) v128) (result (ref null $12))))))
;; CHECK-NEXT: (type $14 (sub final $12 (shared (array (ref $3)))))
;; CHECK-NEXT: (type $15 (sub (shared (func (param i31ref (ref $5)) (result i32)))))
;; CHECK-NEXT: (type $16 (sub $5 (array i32)))
;; CHECK-NEXT: (type $17 (sub (func (result (ref $7)))))
;; CHECK-NEXT: (type $18 (sub (array (mut i8))))
;; CHECK-NEXT: (type $19 (shared (array v128)))
;; CHECK-NEXT: )