summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorStephen Kelly <steveire@gmail.com>2019-01-14 20:11:02 +0000
committerStephen Kelly <steveire@gmail.com>2019-01-14 20:11:02 +0000
commitfb43bdb2f330d12f2334057dde4773b26bde9ebd (patch)
tree1d0a9a1d248c107cc8eab1e78e67bda449d0605f
parentfd998b20491572e12bfb2865f6073bb92c11a347 (diff)
[ASTDump] NFC: Move Type Visit implementation to TextNodeDumper
Reviewers: aaron.ballman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D56639 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@351114 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--include/clang/AST/TextNodeDumper.h2
-rw-r--r--lib/AST/ASTDumper.cpp35
-rw-r--r--lib/AST/TextNodeDumper.cpp42
3 files changed, 47 insertions, 32 deletions
diff --git a/include/clang/AST/TextNodeDumper.h b/include/clang/AST/TextNodeDumper.h
index bfa3683b89..b562d30ef3 100644
--- a/include/clang/AST/TextNodeDumper.h
+++ b/include/clang/AST/TextNodeDumper.h
@@ -159,6 +159,8 @@ public:
void Visit(const Stmt *Node);
+ void Visit(const Type *T);
+
void dumpPointer(const void *Ptr);
void dumpLocation(SourceLocation Loc);
void dumpSourceRange(SourceRange R);
diff --git a/lib/AST/ASTDumper.cpp b/lib/AST/ASTDumper.cpp
index 0e3ca64a59..73db4a9936 100644
--- a/lib/AST/ASTDumper.cpp
+++ b/lib/AST/ASTDumper.cpp
@@ -430,47 +430,18 @@ void ASTDumper::dumpTypeAsChild(QualType T) {
void ASTDumper::dumpTypeAsChild(const Type *T) {
dumpChild([=] {
- if (!T) {
- ColorScope Color(OS, ShowColors, NullColor);
- OS << "<<<NULL>>>";
+ NodeDumper.Visit(T);
+ if (!T)
return;
- }
if (const LocInfoType *LIT = llvm::dyn_cast<LocInfoType>(T)) {
- {
- ColorScope Color(OS, ShowColors, TypeColor);
- OS << "LocInfo Type";
- }
- NodeDumper.dumpPointer(T);
dumpTypeAsChild(LIT->getTypeSourceInfo()->getType());
return;
}
-
- {
- ColorScope Color(OS, ShowColors, TypeColor);
- OS << T->getTypeClassName() << "Type";
- }
- NodeDumper.dumpPointer(T);
- OS << " ";
- NodeDumper.dumpBareType(QualType(T, 0), false);
+ TypeVisitor<ASTDumper>::Visit(T);
QualType SingleStepDesugar =
T->getLocallyUnqualifiedSingleStepDesugaredType();
if (SingleStepDesugar != QualType(T, 0))
- OS << " sugar";
- if (T->isDependentType())
- OS << " dependent";
- else if (T->isInstantiationDependentType())
- OS << " instantiation_dependent";
- if (T->isVariablyModifiedType())
- OS << " variably_modified";
- if (T->containsUnexpandedParameterPack())
- OS << " contains_unexpanded_pack";
- if (T->isFromAST())
- OS << " imported";
-
- TypeVisitor<ASTDumper>::Visit(T);
-
- if (SingleStepDesugar != QualType(T, 0))
dumpTypeAsChild(SingleStepDesugar);
});
}
diff --git a/lib/AST/TextNodeDumper.cpp b/lib/AST/TextNodeDumper.cpp
index d1ee876cc4..1a618ce71b 100644
--- a/lib/AST/TextNodeDumper.cpp
+++ b/lib/AST/TextNodeDumper.cpp
@@ -12,6 +12,7 @@
//===----------------------------------------------------------------------===//
#include "clang/AST/TextNodeDumper.h"
+#include "clang/AST/LocInfoType.h"
using namespace clang;
@@ -130,6 +131,47 @@ void TextNodeDumper::Visit(const Stmt *Node) {
ConstStmtVisitor<TextNodeDumper>::Visit(Node);
}
+void TextNodeDumper::Visit(const Type *T) {
+ if (!T) {
+ ColorScope Color(OS, ShowColors, NullColor);
+ OS << "<<<NULL>>>";
+ return;
+ }
+ if (isa<LocInfoType>(T)) {
+ {
+ ColorScope Color(OS, ShowColors, TypeColor);
+ OS << "LocInfo Type";
+ }
+ dumpPointer(T);
+ return;
+ }
+
+ {
+ ColorScope Color(OS, ShowColors, TypeColor);
+ OS << T->getTypeClassName() << "Type";
+ }
+ dumpPointer(T);
+ OS << " ";
+ dumpBareType(QualType(T, 0), false);
+
+ QualType SingleStepDesugar =
+ T->getLocallyUnqualifiedSingleStepDesugaredType();
+ if (SingleStepDesugar != QualType(T, 0))
+ OS << " sugar";
+
+ if (T->isDependentType())
+ OS << " dependent";
+ else if (T->isInstantiationDependentType())
+ OS << " instantiation_dependent";
+
+ if (T->isVariablyModifiedType())
+ OS << " variably_modified";
+ if (T->containsUnexpandedParameterPack())
+ OS << " contains_unexpanded_pack";
+ if (T->isFromAST())
+ OS << " imported";
+}
+
void TextNodeDumper::dumpPointer(const void *Ptr) {
ColorScope Color(OS, ShowColors, AddressColor);
OS << ' ' << Ptr;