diff options
| author | Anders Carlsson <andersca@mac.com> | 2010-05-03 15:45:23 +0000 |
|---|---|---|
| committer | Anders Carlsson <andersca@mac.com> | 2010-05-03 15:45:23 +0000 |
| commit | c6bb0e117f98dc7ecb72cbb6430742f85d5d60d2 (patch) | |
| tree | 42abcd5bd2b92fd411de03f1f127e3b5542d4601 /clang/lib | |
| parent | ed088b7fe714230ea3a07ab504d16984a4741d0b (diff) | |
| download | bcm5719-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')
| -rw-r--r-- | clang/lib/Sema/SemaExprCXX.cpp | 9 |
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: |

