in facebook-clang-plugins/libtooling/ASTExporter.h [2476:2505]
void ASTExporter<ATDWriter>::VisitObjCIvarDecl(const ObjCIvarDecl *D) {
VisitFieldDecl(D);
bool IsSynthesize = D->getSynthesize();
ObjCIvarDecl::AccessControl AC = D->getAccessControl();
bool ShouldEmitAC = AC != ObjCIvarDecl::None;
ObjectScope Scope(OF, IsSynthesize + ShouldEmitAC); // not covered by tests
OF.emitFlag("is_synthesize", IsSynthesize);
if (ShouldEmitAC) {
OF.emitTag("access_control");
switch (AC) {
case ObjCIvarDecl::Private:
OF.emitSimpleVariant("Private");
break;
case ObjCIvarDecl::Protected:
OF.emitSimpleVariant("Protected");
break;
case ObjCIvarDecl::Public:
OF.emitSimpleVariant("Public");
break;
case ObjCIvarDecl::Package:
OF.emitSimpleVariant("Package");
break;
case ObjCIvarDecl::None:
llvm_unreachable("unreachable");
break;
}
}
}