summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/tools/wasm-fuzz-types.cpp17
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(