class CXXConstructorDecl;
class CXXDestructorDecl;
- class CXXTempVarDecl;
+ class CXXTemporary;
//===--------------------------------------------------------------------===//
// C++ Expressions.
class CXXExprWithTemporaries : public Expr {
Stmt *SubExpr;
- CXXTempVarDecl **Decls;
- unsigned NumDecls;
+ CXXTemporary **Temps;
+ unsigned NumTemps;
public:
- CXXExprWithTemporaries(Expr *subexpr, CXXTempVarDecl **decls,
- unsigned numdecls);
+ CXXExprWithTemporaries(Expr *subexpr, CXXTemporary **temps,
+ unsigned numtemps);
~CXXExprWithTemporaries();
const Expr *getSubExpr() const { return cast<Expr>(SubExpr); }
}
CXXExprWithTemporaries::CXXExprWithTemporaries(Expr *subexpr,
- CXXTempVarDecl **decls,
- unsigned numdecls)
+ CXXTemporary **temps,
+ unsigned numtemps)
: Expr(CXXExprWithTemporariesClass, subexpr->getType(),
subexpr->isTypeDependent(), subexpr->isValueDependent()),
- SubExpr(subexpr), Decls(0), NumDecls(numdecls) {
- if (NumDecls > 0) {
- Decls = new CXXTempVarDecl*[NumDecls];
- for (unsigned i = 0; i < NumDecls; ++i)
- Decls[i] = decls[i];
+ SubExpr(subexpr), Temps(0), NumTemps(numtemps) {
+ if (NumTemps > 0) {
+ Temps = new CXXTemporary*[NumTemps];
+ for (unsigned i = 0; i < NumTemps; ++i)
+ Temps[i] = temps[i];
}
}
CXXExprWithTemporaries::~CXXExprWithTemporaries() {
- delete[] Decls;
+ delete[] Temps;
}
// CXXBindTemporaryExpr
class ObjCContainerDecl;
class BasePaths;
struct MemberLookupCriteria;
+ class CXXTemporary;
/// BlockSemaInfo - When a block is being parsed, this contains information
/// about the block. It is pointed to from Sema::CurBlock.
/// ExprTemporaries - This is the stack of temporaries that are created by
/// the current full expression.
- llvm::SmallVector<CXXTempVarDecl*, 8> ExprTemporaries;
+ llvm::SmallVector<CXXTemporary*, 8> ExprTemporaries;
/// CurFunctionNeedsScopeChecking - This is set to true when a function or
/// ObjC method body contains a VLA or an ObjC try block, which introduce
if (!Constructor)
return ExprError();
- CXXTempVarDecl *Temp = CXXTempVarDecl::Create(Context, CurContext, Ty);
- ExprTemporaries.push_back(Temp);
-
exprs.release();
-
Expr *E = new (Context) CXXTemporaryObjectExpr(Context, Constructor,
Ty, TyBeginLoc, Exprs,
NumExprs, RParenLoc);