static void dump_constant(struct constant *c) { switch (c->kind) { case constant_LITERAL: dump_literal(c->u.literal); break; case constant_METHODDESC: dump_method(c->u.method); break; case constant_VARREF: dump_varref(c->u.varref.id, c->u.varref.written); break; } }
std::string dump_class(const Class& cls) { std::string out; out.append(".class "); if (cls.attr != 0) { out.append("["); out.append(dump_attrs(cls.attr)); out.append(" ] "); } out.append(cls.name); if (cls.parentName) { folly::format(&out, " extends {}", *cls.parentName); } if (!cls.implements.empty()) { out.append(" implements ("); for (const auto& name : cls.implements) { out.append(" "); out.append(name); } out.append(" )"); } out.append(" {\n"); if (!cls.traits.empty()) { out.append(" .use"); for (const auto& trait : cls.traits) { out.append(" "); out.append(trait); } out.append(";\n"); } for (const auto& property : cls.properties) { out.append(dump_property(property)); } for (const auto& method : cls.methods) { out.append(dump_method(*method)); } out.append("}\n\n"); return out; }