From fb43bdb2f330d12f2334057dde4773b26bde9ebd Mon Sep 17 00:00:00 2001 From: Stephen Kelly Date: Mon, 14 Jan 2019 20:11:02 +0000 Subject: [PATCH] [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 --- include/clang/AST/TextNodeDumper.h | 2 ++ lib/AST/ASTDumper.cpp | 35 +++---------------------- lib/AST/TextNodeDumper.cpp | 42 ++++++++++++++++++++++++++++++ 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,46 +430,17 @@ void ASTDumper::dumpTypeAsChild(QualType T) { void ASTDumper::dumpTypeAsChild(const Type *T) { dumpChild([=] { - if (!T) { - ColorScope Color(OS, ShowColors, NullColor); - OS << "<<>>"; + NodeDumper.Visit(T); + if (!T) return; - } if (const LocInfoType *LIT = llvm::dyn_cast(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::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::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::Visit(Node); } +void TextNodeDumper::Visit(const Type *T) { + if (!T) { + ColorScope Color(OS, ShowColors, NullColor); + OS << "<<>>"; + return; + } + if (isa(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; -- 2.50.1