diff options
author | Stephen Kelly <steveire@gmail.com> | 2019-01-14 20:11:02 +0000 |
---|---|---|
committer | Stephen Kelly <steveire@gmail.com> | 2019-01-14 20:11:02 +0000 |
commit | 449fa76d05f171efba64d0952c7c0b35b6239e72 (patch) | |
tree | e829c408ff3562a7d4204c288f53a7ab16cb4d13 | |
parent | 00ae951e616be275db23037f03f2973fba2b27e4 (diff) |
[ASTDump] NFC: Move Type Visit implementation to TextNodeDumper
Reviewers: aaron.ballman
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D56639
llvm-svn: 351114
-rw-r--r-- | clang/include/clang/AST/TextNodeDumper.h | 2 | ||||
-rw-r--r-- | clang/lib/AST/ASTDumper.cpp | 35 | ||||
-rw-r--r-- | clang/lib/AST/TextNodeDumper.cpp | 42 |
3 files changed, 47 insertions, 32 deletions
diff --git a/clang/include/clang/AST/TextNodeDumper.h b/clang/include/clang/AST/TextNodeDumper.h index bfa3683b89ef..b562d30ef36d 100644 --- a/clang/include/clang/AST/TextNodeDumper.h +++ b/clang/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/clang/lib/AST/ASTDumper.cpp b/clang/lib/AST/ASTDumper.cpp index 0e3ca64a5910..73db4a99364e 100644 --- a/clang/lib/AST/ASTDumper.cpp +++ b/clang/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/clang/lib/AST/TextNodeDumper.cpp b/clang/lib/AST/TextNodeDumper.cpp index d1ee876cc437..1a618ce71bdf 100644 --- a/clang/lib/AST/TextNodeDumper.cpp +++ b/clang/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; |