diff options
| author | Aaron Ballman <aaron@aaronballman.com> | 2019-06-21 16:06:09 +0000 |
|---|---|---|
| committer | Aaron Ballman <aaron@aaronballman.com> | 2019-06-21 16:06:09 +0000 |
| commit | 104b12980ccf98c16ca558bbd564f970e44a8382 (patch) | |
| tree | 21c4f6f10b03cba7b9a47c7f279085b82f536e1f /clang/lib | |
| parent | f66309203e277506a2d4b228d17b4c915c9d56e2 (diff) | |
| download | bcm5719-llvm-104b12980ccf98c16ca558bbd564f970e44a8382.tar.gz bcm5719-llvm-104b12980ccf98c16ca558bbd564f970e44a8382.zip | |
Print more type node information when dumping the AST to JSON.
llvm-svn: 364067
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/AST/JSONNodeDumper.cpp | 20 |
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()); |

