diff options
author | Anders Carlsson <andersca@mac.com> | 2009-05-30 20:03:25 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@mac.com> | 2009-05-30 20:03:25 +0000 |
commit | fceb0a8adba9d25db99a4d73e9655c2831a96ecd (patch) | |
tree | e8a72292f3196229430e122f73383a03734b0f9d /lib/AST/ExprCXX.cpp | |
parent | c1ce477119fed070299668aab24084b17ff5f14b (diff) |
Add a CXXBindTemporaryExpr.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@72627 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/AST/ExprCXX.cpp')
-rw-r--r-- | lib/AST/ExprCXX.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/lib/AST/ExprCXX.cpp b/lib/AST/ExprCXX.cpp index 16b9c4b67b..d0032fb5e5 100644 --- a/lib/AST/ExprCXX.cpp +++ b/lib/AST/ExprCXX.cpp @@ -242,6 +242,15 @@ CXXTemporary *CXXTemporary::Create(ASTContext &C, return new CXXTemporary(Destructor); } +CXXBindTemporaryExpr *CXXBindTemporaryExpr::Create(ASTContext &C, + CXXTemporary *Temp, + Expr* SubExpr) { + assert(SubExpr->getType()->isRecordType() && + "Expression bound to a temporary must have record type!"); + + return new CXXBindTemporaryExpr(Temp, SubExpr); +} + CXXTemporaryObjectExpr::CXXTemporaryObjectExpr(ASTContext &C, VarDecl *vd, CXXConstructorDecl *Cons, QualType writtenTy, @@ -303,6 +312,15 @@ CXXExprWithTemporaries::~CXXExprWithTemporaries() { delete[] Decls; } +// CXXBindTemporaryExpr +Stmt::child_iterator CXXBindTemporaryExpr::child_begin() { + return &SubExpr; +} + +Stmt::child_iterator CXXBindTemporaryExpr::child_end() { + return &SubExpr + 1; +} + // CXXConstructExpr Stmt::child_iterator CXXConstructExpr::child_begin() { return &Args[0]; |