diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/tools/wasm-fuzz-types.cpp | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/src/tools/wasm-fuzz-types.cpp b/src/tools/wasm-fuzz-types.cpp index 4b1f2800e..352a8a5fb 100644 --- a/src/tools/wasm-fuzz-types.cpp +++ b/src/tools/wasm-fuzz-types.cpp @@ -88,8 +88,22 @@ void Fuzzer::printTypes(const std::vector<HeapType>& types) { }; IndexedTypeNameGenerator<FatalTypeNameGenerator> print(types); std::unordered_map<HeapType, size_t> seen; + std::optional<RecGroup> currRecGroup; + auto inRecGroup = [&]() { return currRecGroup && currRecGroup->size() > 1; }; for (size_t i = 0; i < types.size(); ++i) { auto type = types[i]; + if (!type.isBasic() && type.getRecGroup() != currRecGroup) { + if (inRecGroup()) { + std::cout << ")\n"; + } + currRecGroup = type.getRecGroup(); + if (inRecGroup()) { + std::cout << "(rec\n"; + } + } + if (inRecGroup()) { + std::cout << ' '; + } std::cout << "(type $" << i << ' '; if (type.isBasic()) { std::cout << print(type) << ")\n"; @@ -103,6 +117,9 @@ void Fuzzer::printTypes(const std::vector<HeapType>& types) { } std::cout << ")\n"; } + if (inRecGroup()) { + std::cout << ")\n"; + } } void Fuzzer::checkSubtypes( |