Extend InitListExpr API/IMPL to support arbitrary add/remove (in support of the initializer rewrite I am doing).
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@50511 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/lib/AST/Expr.cpp b/lib/AST/Expr.cpp
index 264ef7b..67e39b6 100644
--- a/lib/AST/Expr.cpp
+++ b/lib/AST/Expr.cpp
@@ -254,14 +254,11 @@
InitListExpr::InitListExpr(SourceLocation lbraceloc,
Expr **initexprs, unsigned numinits,
SourceLocation rbraceloc)
- : Expr(InitListExprClass, QualType())
- , NumInits(numinits)
- , LBraceLoc(lbraceloc)
- , RBraceLoc(rbraceloc)
+ : Expr(InitListExprClass, QualType()),
+ LBraceLoc(lbraceloc), RBraceLoc(rbraceloc)
{
- InitExprs = new Expr*[numinits];
for (unsigned i = 0; i != numinits; i++)
- InitExprs[i] = initexprs[i];
+ InitExprs.push_back(initexprs[i]);
}
//===----------------------------------------------------------------------===//
@@ -1368,7 +1365,7 @@
return reinterpret_cast<Stmt**>(&InitExprs[0]);
}
Stmt::child_iterator InitListExpr::child_end() {
- return reinterpret_cast<Stmt**>(&InitExprs[NumInits]);
+ return reinterpret_cast<Stmt**>(&InitExprs[getNumInits()]);
}
// ObjCStringLiteral