[ASTDump] NFC: Move Type Visit implementation to TextNodeDumper
authorStephen Kelly <steveire@gmail.com>
Mon, 14 Jan 2019 20:11:02 +0000 (20:11 +0000)
committerStephen Kelly <steveire@gmail.com>
Mon, 14 Jan 2019 20:11:02 +0000 (20:11 +0000)
Reviewers: aaron.ballman

Subscribers: cfe-commits

Differential Revision: https://reviews.llvm.org/D56639

llvm-svn: 351114

clang/include/clang/AST/TextNodeDumper.h
clang/lib/AST/ASTDumper.cpp
clang/lib/AST/TextNodeDumper.cpp

index bfa3683..b562d30 100644 (file)
@@ -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);
index 0e3ca64..73db4a9 100644 (file)
@@ -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);
   });
 }
index d1ee876..1a618ce 100644 (file)
@@ -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;