summaryrefslogtreecommitdiffstats
path: root/clang/lib
diff options
context:
space:
mode:
authorArgyrios Kyrtzidis <akyrtzi@gmail.com>2008-09-09 23:47:53 +0000
committerArgyrios Kyrtzidis <akyrtzi@gmail.com>2008-09-09 23:47:53 +0000
commitaa479138ea236f7f1165c8e81e217e7df72d61d2 (patch)
tree5495236f923371fd6792b29101d8912e60230415 /clang/lib
parent0fff397a134b156cb4b9d60472b2d1ebd19cd3cd (diff)
downloadbcm5719-llvm-aa479138ea236f7f1165c8e81e217e7df72d61d2.tar.gz
bcm5719-llvm-aa479138ea236f7f1165c8e81e217e7df72d61d2.zip
Add new 'CXXConditionDeclExpr' expression node used for a 'condition' declaration, e.g: "if (int x=0) {...}".
It is a subclass of DeclRefExpr and the main difference is that CXXConditionDeclExpr owns the declaration that it references. llvm-svn: 56033
Diffstat (limited to 'clang/lib')
-rw-r--r--clang/lib/AST/ExprCXX.cpp14
-rw-r--r--clang/lib/AST/StmtPrinter.cpp5
2 files changed, 19 insertions, 0 deletions
diff --git a/clang/lib/AST/ExprCXX.cpp b/clang/lib/AST/ExprCXX.cpp
index cf85ae2d75b..2ad65451dee 100644
--- a/clang/lib/AST/ExprCXX.cpp
+++ b/clang/lib/AST/ExprCXX.cpp
@@ -14,6 +14,12 @@
#include "clang/AST/ExprCXX.h"
using namespace clang;
+void CXXConditionDeclExpr::Destroy(ASTContext& C) {
+ getVarDecl()->Destroy(C);
+ delete this;
+}
+
+
//===----------------------------------------------------------------------===//
// Child Iterators for iterating over subexpressions/substatements
//===----------------------------------------------------------------------===//
@@ -53,3 +59,11 @@ Stmt::child_iterator CXXZeroInitValueExpr::child_begin() {
Stmt::child_iterator CXXZeroInitValueExpr::child_end() {
return child_iterator();
}
+
+// CXXConditionDeclExpr
+Stmt::child_iterator CXXConditionDeclExpr::child_begin() {
+ return getVarDecl();
+}
+Stmt::child_iterator CXXConditionDeclExpr::child_end() {
+ return child_iterator();
+}
diff --git a/clang/lib/AST/StmtPrinter.cpp b/clang/lib/AST/StmtPrinter.cpp
index f5806ea5dda..3c3e207a02d 100644
--- a/clang/lib/AST/StmtPrinter.cpp
+++ b/clang/lib/AST/StmtPrinter.cpp
@@ -829,6 +829,11 @@ void StmtPrinter::VisitCXXZeroInitValueExpr(CXXZeroInitValueExpr *Node) {
OS << Node->getType().getAsString() << "()";
}
+void
+StmtPrinter::VisitCXXConditionDeclExpr(CXXConditionDeclExpr *E) {
+ PrintRawDecl(E->getVarDecl());
+}
+
// Obj-C
void StmtPrinter::VisitObjCStringLiteral(ObjCStringLiteral *Node) {
OpenPOWER on IntegriCloud