Beispiel #1
0
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;
    }
}
Beispiel #2
0
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;
}