瀏覽代碼

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
Stephen Kelly 6 年之前
父節點
當前提交
e8c5520a99
共有 3 個文件被更改,包括 26 次插入15 次删除
  1. 2 0
      include/clang/AST/TextNodeDumper.h
  2. 11 15
      lib/AST/ASTDumper.cpp
  3. 13 0
      lib/AST/TextNodeDumper.cpp

+ 2 - 0
include/clang/AST/TextNodeDumper.h

@@ -172,6 +172,8 @@ public:
 
 
   void Visit(const BlockDecl::Capture &C);
   void Visit(const BlockDecl::Capture &C);
 
 
+  void Visit(const GenericSelectionExpr::ConstAssociation &A);
+
   void dumpPointer(const void *Ptr);
   void dumpPointer(const void *Ptr);
   void dumpLocation(SourceLocation Loc);
   void dumpLocation(SourceLocation Loc);
   void dumpSourceRange(SourceRange R);
   void dumpSourceRange(SourceRange R);

+ 11 - 15
lib/AST/ASTDumper.cpp

@@ -297,6 +297,7 @@ namespace  {
     void VisitInitListExpr(const InitListExpr *ILE);
     void VisitInitListExpr(const InitListExpr *ILE);
     void VisitBlockExpr(const BlockExpr *Node);
     void VisitBlockExpr(const BlockExpr *Node);
     void VisitOpaqueValueExpr(const OpaqueValueExpr *Node);
     void VisitOpaqueValueExpr(const OpaqueValueExpr *Node);
+    void Visit(const GenericSelectionExpr::ConstAssociation &A);
     void VisitGenericSelectionExpr(const GenericSelectionExpr *E);
     void VisitGenericSelectionExpr(const GenericSelectionExpr *E);
 
 
     // C++
     // C++
@@ -1456,6 +1457,15 @@ void ASTDumper::VisitOpaqueValueExpr(const OpaqueValueExpr *Node) {
     dumpStmt(Source);
     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) {
 void ASTDumper::VisitGenericSelectionExpr(const GenericSelectionExpr *E) {
   if (E->isResultDependent())
   if (E->isResultDependent())
     OS << " result_dependent";
     OS << " result_dependent";
@@ -1463,21 +1473,7 @@ void ASTDumper::VisitGenericSelectionExpr(const GenericSelectionExpr *E) {
   dumpTypeAsChild(E->getControllingExpr()->getType()); // FIXME: remove
   dumpTypeAsChild(E->getControllingExpr()->getType()); // FIXME: remove
 
 
   for (const auto &Assoc : E->associations()) {
   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);
   }
   }
 }
 }
 
 

+ 13 - 0
lib/AST/TextNodeDumper.cpp

@@ -312,6 +312,19 @@ void TextNodeDumper::Visit(const OMPClause *C) {
     OS << " <implicit>";
     OS << " <implicit>";
 }
 }
 
 
+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) {
 void TextNodeDumper::dumpPointer(const void *Ptr) {
   ColorScope Color(OS, ShowColors, AddressColor);
   ColorScope Color(OS, ShowColors, AddressColor);
   OS << ' ' << Ptr;
   OS << ' ' << Ptr;