in facebook-clang-plugins/libtooling/ASTExporter.h [743:782]
void ASTExporter<ATDWriter>::dumpLookups(const DeclContext &DC) {
ObjectScope Scope(OF, 4); // not covered by tests
OF.emitTag("decl_ref");
dumpDeclRef(cast<Decl>(DC));
const DeclContext *Primary = DC.getPrimaryContext();
if (Primary != &DC) {
OF.emitTag("primary_context_pointer");
dumpPointer(cast<Decl>(Primary));
}
OF.emitTag("lookups");
{
ArrayScope Scope(OF);
DeclContext::all_lookups_iterator I = Primary->noload_lookups_begin(),
E = Primary->noload_lookups_end();
while (I != E) {
DeclarationName Name = I.getLookupName();
DeclContextLookupResult R = *I++;
ObjectScope Scope(OF, 2); // not covered by tests
OF.emitTag("decl_name");
OF.emitString(Name.getAsString());
OF.emitTag("decl_refs");
{
ArrayScope Scope(OF);
for (DeclContextLookupResult::iterator RI = R.begin(), RE = R.end();
RI != RE;
++RI) {
dumpDeclRef(**RI);
}
}
}
}
bool HasUndeserializedLookups = Primary->hasExternalVisibleStorage();
OF.emitFlag("has_undeserialized_decls", HasUndeserializedLookups);
}