From: Stephen Kelly Date: Tue, 29 Jan 2019 22:22:55 +0000 (+0000) Subject: NFC: Implement GenericSelectionExpr::Association dump with Visitor X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e8c5520a99393e5111c47b295effb7050bea62be;p=clang NFC: Implement GenericSelectionExpr::Association dump with Visitor Reviewers: aaron.ballman Subscribers: cfe-commits Differential Revision: https://reviews.llvm.org/D56960 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@352552 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/AST/TextNodeDumper.h b/include/clang/AST/TextNodeDumper.h index d368de1ce1..d772d7f602 100644 --- a/include/clang/AST/TextNodeDumper.h +++ b/include/clang/AST/TextNodeDumper.h @@ -172,6 +172,8 @@ public: void Visit(const BlockDecl::Capture &C); + void Visit(const GenericSelectionExpr::ConstAssociation &A); + 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 5c99dab356..03da41143f 100644 --- a/lib/AST/ASTDumper.cpp +++ b/lib/AST/ASTDumper.cpp @@ -297,6 +297,7 @@ namespace { void VisitInitListExpr(const InitListExpr *ILE); void VisitBlockExpr(const BlockExpr *Node); void VisitOpaqueValueExpr(const OpaqueValueExpr *Node); + void Visit(const GenericSelectionExpr::ConstAssociation &A); void VisitGenericSelectionExpr(const GenericSelectionExpr *E); // C++ @@ -1456,6 +1457,15 @@ void ASTDumper::VisitOpaqueValueExpr(const OpaqueValueExpr *Node) { dumpStmt(Source); } +void ASTDumper::Visit(const GenericSelectionExpr::ConstAssociation &A) { + dumpChild([=] { + NodeDumper.Visit(A); + if (const TypeSourceInfo *TSI = A.getTypeSourceInfo()) + dumpTypeAsChild(TSI->getType()); + dumpStmt(A.getAssociationExpr()); + }); +} + void ASTDumper::VisitGenericSelectionExpr(const GenericSelectionExpr *E) { if (E->isResultDependent()) OS << " result_dependent"; @@ -1463,21 +1473,7 @@ void ASTDumper::VisitGenericSelectionExpr(const GenericSelectionExpr *E) { dumpTypeAsChild(E->getControllingExpr()->getType()); // FIXME: remove for (const auto &Assoc : E->associations()) { - dumpChild([=] { - if (const TypeSourceInfo *TSI = Assoc.getTypeSourceInfo()) { - OS << "case "; - NodeDumper.dumpType(TSI->getType()); - } else { - OS << "default"; - } - - if (Assoc.isSelected()) - OS << " selected"; - - if (const TypeSourceInfo *TSI = Assoc.getTypeSourceInfo()) - dumpTypeAsChild(TSI->getType()); - dumpStmt(Assoc.getAssociationExpr()); - }); + Visit(Assoc); } } diff --git a/lib/AST/TextNodeDumper.cpp b/lib/AST/TextNodeDumper.cpp index 06beb77f7a..63e3184eab 100644 --- a/lib/AST/TextNodeDumper.cpp +++ b/lib/AST/TextNodeDumper.cpp @@ -312,6 +312,19 @@ void TextNodeDumper::Visit(const OMPClause *C) { OS << " "; } +void TextNodeDumper::Visit(const GenericSelectionExpr::ConstAssociation &A) { + const TypeSourceInfo *TSI = A.getTypeSourceInfo(); + if (TSI) { + OS << "case "; + dumpType(TSI->getType()); + } else { + OS << "default"; + } + + if (A.isSelected()) + OS << " selected"; +} + void TextNodeDumper::dumpPointer(const void *Ptr) { ColorScope Color(OS, ShowColors, AddressColor); OS << ' ' << Ptr;