summaryrefslogtreecommitdiffstats
path: root/clang/lib/Sema/SemaExprCXX.cpp
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@mac.com>2010-05-03 15:45:23 +0000
committerAnders Carlsson <andersca@mac.com>2010-05-03 15:45:23 +0000
commitc6bb0e117f98dc7ecb72cbb6430742f85d5d60d2 (patch)
tree42abcd5bd2b92fd411de03f1f127e3b5542d4601 /clang/lib/Sema/SemaExprCXX.cpp
parented088b7fe714230ea3a07ab504d16984a4741d0b (diff)
downloadbcm5719-llvm-c6bb0e117f98dc7ecb72cbb6430742f85d5d60d2.tar.gz
bcm5719-llvm-c6bb0e117f98dc7ecb72cbb6430742f85d5d60d2.zip
The array form of 'new' can never have initializers.
llvm-svn: 102917
Diffstat (limited to 'clang/lib/Sema/SemaExprCXX.cpp')
-rw-r--r--clang/lib/Sema/SemaExprCXX.cpp9
1 files changed, 9 insertions, 0 deletions
diff --git a/clang/lib/Sema/SemaExprCXX.cpp b/clang/lib/Sema/SemaExprCXX.cpp
index e6b3c4e3a04..425fc2d15aa 100644
--- a/clang/lib/Sema/SemaExprCXX.cpp
+++ b/clang/lib/Sema/SemaExprCXX.cpp
@@ -738,6 +738,15 @@ Sema::BuildCXXNew(SourceLocation StartLoc, bool UseGlobal,
unsigned NumConsArgs = ConstructorArgs.size();
ASTOwningVector<&ActionBase::DeleteExpr> ConvertedConstructorArgs(*this);
+ // Array 'new' can't have any initializers.
+ if (NumConsArgs && ArraySize) {
+ SourceRange InitRange(ConsArgs[0]->getLocStart(),
+ ConsArgs[NumConsArgs - 1]->getLocEnd());
+
+ Diag(StartLoc, diag::err_new_array_init_args) << InitRange;
+ return ExprError();
+ }
+
if (!AllocType->isDependentType() &&
!Expr::hasAnyTypeDependentArguments(ConsArgs, NumConsArgs)) {
// C++0x [expr.new]p15:
OpenPOWER on IntegriCloud