in facebook-clang-plugins/libtooling/ASTExporter.h [4553:4575]
void ASTExporter<ATDWriter>::VisitObjCSubscriptRefExpr(
const ObjCSubscriptRefExpr *Node) {
VisitExpr(Node);
bool HasGetter = Node->getAtIndexMethodDecl();
bool HasSetter = Node->setAtIndexMethodDecl();
ObjectScope Scope(OF, 1 + HasGetter + HasSetter); // not covered by tests
OF.emitTag("kind");
if (Node->isArraySubscriptRefExpr()) {
OF.emitSimpleVariant("ArraySubscript");
} else {
OF.emitSimpleVariant("DictionarySubscript");
}
if (HasGetter) {
OF.emitTag("getter");
dumpSelector(Node->getAtIndexMethodDecl()->getSelector());
}
if (HasSetter) {
OF.emitTag("setter");
dumpSelector(Node->setAtIndexMethodDecl()->getSelector());
}
}