summaryrefslogtreecommitdiffstats
path: root/clang/lib/AST/JSONNodeDumper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'clang/lib/AST/JSONNodeDumper.cpp')
-rw-r--r--clang/lib/AST/JSONNodeDumper.cpp20
1 files changed, 20 insertions, 0 deletions
diff --git a/clang/lib/AST/JSONNodeDumper.cpp b/clang/lib/AST/JSONNodeDumper.cpp
index fd8569658a4..550f6ef94eb 100644
--- a/clang/lib/AST/JSONNodeDumper.cpp
+++ b/clang/lib/AST/JSONNodeDumper.cpp
@@ -611,6 +611,26 @@ void JSONNodeDumper::VisitPackExpansionType(const PackExpansionType *PET) {
JOS.attribute("numExpansions", *N);
}
+void JSONNodeDumper::VisitElaboratedType(const ElaboratedType *ET) {
+ if (const NestedNameSpecifier *NNS = ET->getQualifier()) {
+ std::string Str;
+ llvm::raw_string_ostream OS(Str);
+ NNS->print(OS, PrintPolicy, /*ResolveTemplateArgs*/ true);
+ JOS.attribute("qualifier", OS.str());
+ }
+ if (const TagDecl *TD = ET->getOwnedTagDecl())
+ JOS.attribute("ownedTagDecl", createBareDeclRef(TD));
+}
+
+void JSONNodeDumper::VisitMacroQualifiedType(const MacroQualifiedType *MQT) {
+ JOS.attribute("macroName", MQT->getMacroIdentifier()->getName());
+}
+
+void JSONNodeDumper::VisitMemberPointerType(const MemberPointerType *MPT) {
+ attributeOnlyIfTrue("isData", MPT->isMemberDataPointer());
+ attributeOnlyIfTrue("isFunction", MPT->isMemberFunctionPointer());
+}
+
void JSONNodeDumper::VisitNamedDecl(const NamedDecl *ND) {
if (ND && ND->getDeclName())
JOS.attribute("name", ND->getNameAsString());
OpenPOWER on IntegriCloud