in facebook-clang-plugins/libtooling/ASTExporter.h [2764:2791]
void ASTExporter<ATDWriter>::VisitObjCImplementationDecl(
const ObjCImplementationDecl *D) {
ASTExporter<ATDWriter>::VisitObjCImplDecl(D);
const ObjCInterfaceDecl *SC = D->getSuperClass();
const ObjCInterfaceDecl *CI = D->getClassInterface();
ObjCImplementationDecl::init_const_iterator I = D->init_begin(),
E = D->init_end();
bool HasInitializers = I != E;
ObjectScope Scope(OF, 0 + (bool)SC + (bool)CI + HasInitializers);
if (SC) {
OF.emitTag("super");
dumpDeclRef(*SC);
}
if (CI) {
OF.emitTag("class_interface");
dumpDeclRef(*CI);
}
if (HasInitializers) {
OF.emitTag("ivar_initializers");
ArrayScope Scope(OF, std::distance(I, E)); // not covered by tests
for (; I != E; ++I) {
assert(*I);
dumpCXXCtorInitializer(**I);
}
}
}