std::string visitUnionType(const UnionType& type) const { std::string str = visitType(type); str+="["; bool first=true; for(auto unionType: type.getElementTypes()) { if(first) first = false; else str+=","; str+=visit(*unionType); } str+="]"; return str; }
std::string visitRecordType(const RecordType& type) const { std::string str = visitType(type); str+="{"; bool first=true; for(auto field: type.getFields()) { if(first) first = false; else str+=","; str+=field.name; str+="#"; str+=visit(field.type); } str+="}"; return str; }
static void resolveType(ResolveNames& rs, Ty* type) { visitType(type, resolveTypeInstance, rs); }