]> granicus.if.org Git - clang/commitdiff
Add some information about temporaries to the statement dumper.
authorAnders Carlsson <andersca@mac.com>
Wed, 12 Aug 2009 00:21:52 +0000 (00:21 +0000)
committerAnders Carlsson <andersca@mac.com>
Wed, 12 Aug 2009 00:21:52 +0000 (00:21 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@78754 91177308-0d34-0410-b5e6-96231b3b80d8

lib/AST/StmtDumper.cpp

index bc096bf0d9f397a046dcea610b97c348b239d008..1087b0d6f2721f0b7541858187442f852336d0f0 100644 (file)
@@ -137,6 +137,10 @@ namespace  {
     void VisitCXXBoolLiteralExpr(CXXBoolLiteralExpr *Node);
     void VisitCXXThisExpr(CXXThisExpr *Node);
     void VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *Node);
+    void VisitCXXConstructExpr(CXXConstructExpr *Node);
+    void VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *Node);
+    void VisitCXXExprWithTemporaries(CXXExprWithTemporaries *Node);
+    void DumpCXXTemporary(CXXTemporary *Temporary);
     
     // ObjC
     void VisitObjCEncodeExpr(ObjCEncodeExpr *Node);
@@ -451,6 +455,33 @@ void StmtDumper::VisitCXXFunctionalCastExpr(CXXFunctionalCastExpr *Node) {
           Node->getTypeAsWritten().getAsString().c_str());
 }
 
+void StmtDumper::VisitCXXConstructExpr(CXXConstructExpr *Node) {
+  DumpExpr(Node);
+  if (Node->isElidable())
+    fprintf(F, "elidable");
+}
+
+void StmtDumper::VisitCXXBindTemporaryExpr(CXXBindTemporaryExpr *Node) {
+  DumpExpr(Node);
+  fprintf(F, " ");
+  DumpCXXTemporary(Node->getTemporary());
+}
+
+void StmtDumper::VisitCXXExprWithTemporaries(CXXExprWithTemporaries *Node) {
+  DumpExpr(Node);
+  ++IndentLevel;
+  for (unsigned i = 0, e = Node->getNumTemporaries(); i != e; ++i) {
+    fprintf(F, "\n");
+    Indent();
+    DumpCXXTemporary(Node->getTemporary(i));
+  }
+  --IndentLevel;
+}
+
+void StmtDumper::DumpCXXTemporary(CXXTemporary *Temporary) {
+  fprintf(F, "(CXXTemporary %p)", (void *)Temporary);
+}
+
 //===----------------------------------------------------------------------===//
 // Obj-C Expressions
 //===----------------------------------------------------------------------===//