diff options
author | Thomas Lively <tlively@google.com> | 2023-03-03 16:01:27 -0600 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-03-03 22:01:27 +0000 |
commit | dea234b50fac389605209e818bbab39777984f36 (patch) | |
tree | 76ad138609fba6d405661ea17ff2bdaa871c1e71 | |
parent | e13ad341c86ded9c646b7106e76472d6343156d9 (diff) | |
download | binaryen-dea234b50fac389605209e818bbab39777984f36.tar.gz binaryen-dea234b50fac389605209e818bbab39777984f36.tar.bz2 binaryen-dea234b50fac389605209e818bbab39777984f36.zip |
Fix type printing in the type fuzzer (#5543)
In #5437 we updated type printing so that printing a heap type would print its
name in addition to its contents. We had already been separately printing type
names in the type fuzzer, so after that change we were printing each type name
twice. Remove the redundant printing in the fuzzer to fix the error.
-rw-r--r-- | src/tools/wasm-fuzz-types.cpp | 7 | ||||
-rw-r--r-- | test/lit/fuzz-types/isorecursive.test | 36 | ||||
-rw-r--r-- | test/lit/fuzz-types/nominal.test | 38 |
3 files changed, 40 insertions, 41 deletions
diff --git a/src/tools/wasm-fuzz-types.cpp b/src/tools/wasm-fuzz-types.cpp index 4dfa1cf62..dd85223dc 100644 --- a/src/tools/wasm-fuzz-types.cpp +++ b/src/tools/wasm-fuzz-types.cpp @@ -116,18 +116,17 @@ void Fuzzer::printTypes(const std::vector<HeapType>& types) { if (inRecGroup()) { std::cout << ' '; } - std::cout << "(type $" << i << ' '; if (type.isBasic()) { - std::cout << print(type) << ")\n"; + std::cout << "(type $" << i << ' ' << print(type) << ")\n"; continue; } auto [it, inserted] = seen.insert({type, i}); if (inserted) { std::cout << print(type); } else { - std::cout << "identical to $" << it->second; + std::cout << "(type $" << i << " identical to $" << it->second << ")"; } - std::cout << ")\n"; + std::cout << "\n"; } if (inRecGroup()) { std::cout << ")\n"; diff --git a/test/lit/fuzz-types/isorecursive.test b/test/lit/fuzz-types/isorecursive.test index 92f604215..78adf1bbc 100644 --- a/test/lit/fuzz-types/isorecursive.test +++ b/test/lit/fuzz-types/isorecursive.test @@ -34,33 +34,33 @@ ;; CHECK-NEXT: Inhabitable types: ;; CHECK-NEXT: ;; CHECK-NEXT: Built 20 types: -;; CHECK-NEXT: (type $0 (type $0 (struct))) +;; CHECK-NEXT: (type $0 (struct)) ;; CHECK-NEXT: (rec -;; CHECK-NEXT: (type $1 (type $1 (struct))) -;; CHECK-NEXT: (type $2 (type $2 (array i16))) -;; CHECK-NEXT: (type $3 (type $3 (func))) -;; CHECK-NEXT: (type $4 (type $4 (func (param (ref $5) i32 i64 f64 f64 (ref eq) v128) (result i64)))) -;; CHECK-NEXT: (type $5 (type $5 (array (mut i32)))) +;; CHECK-NEXT: (type $1 (struct)) +;; CHECK-NEXT: (type $2 (array i16)) +;; CHECK-NEXT: (type $3 (func)) +;; CHECK-NEXT: (type $4 (func (param (ref $5) i32 i64 f64 f64 (ref eq) v128) (result i64))) +;; CHECK-NEXT: (type $5 (array (mut i32))) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (rec -;; CHECK-NEXT: (type $6 (type $6 (array (mut funcref)))) -;; CHECK-NEXT: (type $7 (type $7 (func (param f64) (result i64)))) +;; CHECK-NEXT: (type $6 (array (mut funcref))) +;; CHECK-NEXT: (type $7 (func (param f64) (result i64))) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (rec -;; CHECK-NEXT: (type $8 (type $8 (struct_subtype (field f64 (ref $2) f64 (mut (ref null $9))) $1))) -;; CHECK-NEXT: (type $9 (type $9 (func_subtype (param (ref array) i32 i64 f64 f64 anyref 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 (type $10 (func_subtype (param (ref eq) i32 i64 f64 f64 anyref v128) (result i64) $9))) -;; CHECK-NEXT: (type $11 (type $11 (array_subtype (mut funcref) $6))) -;; CHECK-NEXT: (type $12 (type $12 (array nullref))) +;; 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 nullref)) ;; CHECK-NEXT: (type $13 none) -;; CHECK-NEXT: (type $14 (type $14 (array (ref $6)))) -;; CHECK-NEXT: (type $15 (type $15 (array i32))) +;; CHECK-NEXT: (type $14 (array (ref $6))) +;; CHECK-NEXT: (type $15 (array i32)) ;; CHECK-NEXT: ) ;; CHECK-NEXT: (rec -;; CHECK-NEXT: (type $16 (type $16 (array_subtype nullref $12))) -;; CHECK-NEXT: (type $17 (type $17 (func (param (ref null $9)) (result f32 structref)))) +;; CHECK-NEXT: (type $16 (array_subtype nullref $12)) +;; CHECK-NEXT: (type $17 (func (param (ref null $9)) (result f32 structref))) ;; CHECK-NEXT: (type $18 none) ;; CHECK-NEXT: ) -;; CHECK-NEXT: (type $19 (type $19 (func_subtype (param (ref any) i32 i64 f64 f64 anyref 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 613e73b52..062900b62 100644 --- a/test/lit/fuzz-types/nominal.test +++ b/test/lit/fuzz-types/nominal.test @@ -24,23 +24,23 @@ ;; CHECK-NEXT: Inhabitable types: ;; CHECK-NEXT: ;; CHECK-NEXT: Built 20 types: -;; CHECK-NEXT: (type $0 (type $0 (struct (field (mut i16) i31ref f32 f32 f64)))) -;; CHECK-NEXT: (type $1 (type $1 (func (param f64 v128)))) -;; CHECK-NEXT: (type $2 (type $2 (struct (field (mut (ref null $19)) f64 arrayref)))) -;; CHECK-NEXT: (type $3 (type $3 (struct_subtype (field (mut i16) (ref i31) f32 f32 f64) $0))) -;; CHECK-NEXT: (type $4 (type $4 (struct))) +;; CHECK-NEXT: (type $0 (struct (field (mut i16) i31ref f32 f32 f64))) +;; 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)) ;; CHECK-NEXT: (type $5 none) -;; CHECK-NEXT: (type $6 (type $6 (array (mut eqref)))) -;; CHECK-NEXT: (type $7 (type $7 (func_subtype (param f64 v128) $1))) -;; CHECK-NEXT: (type $8 (type $8 (array anyref))) -;; CHECK-NEXT: (type $9 (type $9 (array f32))) -;; CHECK-NEXT: (type $10 (type $10 (struct_subtype (field (mut i16) (ref i31) f32 f32 f64) $0))) -;; CHECK-NEXT: (type $11 (type $11 (func (result f64)))) -;; CHECK-NEXT: (type $12 (type $12 (func_subtype (param f64 v128) $1))) -;; CHECK-NEXT: (type $13 (type $13 (func_subtype (param f64 v128) $12))) -;; CHECK-NEXT: (type $14 (type $14 (func_subtype (result f64) $11))) -;; CHECK-NEXT: (type $15 (type $15 (func_subtype (result f64) $14))) -;; CHECK-NEXT: (type $16 (type $16 (func (param (ref struct)) (result structref)))) -;; CHECK-NEXT: (type $17 (type $17 (array (mut (ref $2))))) -;; CHECK-NEXT: (type $18 (type $18 (array (ref $10)))) -;; CHECK-NEXT: (type $19 (type $19 (struct_subtype (field (mut i16) (ref i31) f32 f32 f64 (mut f32)) $0))) +;; CHECK-NEXT: (type $6 (array (mut eqref))) +;; CHECK-NEXT: (type $7 (func_subtype (param f64 v128) $1)) +;; 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 (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)) |