aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2012-03-18 22:25:45 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2012-03-18 22:25:45 +0000
commit3e280b58db5e7dc2bab736fa65af2b8157916726 (patch)
tree9e0251462c87358fba47a5107a60424ee3fcb710
parent359487b68633a65c3e87a2146e0706fa5ae27d19 (diff)
Add the missing compatibility warning for braced initializers as default arguments.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153026 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/Parse/ParseDecl.cpp5
-rw-r--r--test/SemaCXX/cxx98-compat.cpp3
2 files changed, 5 insertions, 3 deletions
diff --git a/lib/Parse/ParseDecl.cpp b/lib/Parse/ParseDecl.cpp
index 2fac0dca40..6f344f6691 100644
--- a/lib/Parse/ParseDecl.cpp
+++ b/lib/Parse/ParseDecl.cpp
@@ -4282,9 +4282,10 @@ void Parser::ParseParameterDeclarationClause(
Param);
ExprResult DefArgResult;
- if (Tok.is(tok::l_brace))
+ if (getLangOpts().CPlusPlus0x && Tok.is(tok::l_brace)) {
+ Diag(Tok, diag::warn_cxx98_compat_generalized_initializer_lists);
DefArgResult = ParseBraceInitializer();
- else
+ } else
DefArgResult = ParseAssignmentExpression();
if (DefArgResult.isInvalid()) {
Actions.ActOnParamDefaultArgumentError(Param);
diff --git a/test/SemaCXX/cxx98-compat.cpp b/test/SemaCXX/cxx98-compat.cpp
index 903932c189..211f11cc59 100644
--- a/test/SemaCXX/cxx98-compat.cpp
+++ b/test/SemaCXX/cxx98-compat.cpp
@@ -39,7 +39,8 @@ void Lambda() {
[]{}(); // expected-warning {{lambda expressions are incompatible with C++98}}
}
-int InitList() {
+int InitList(int i = {}) { // expected-warning {{generalized initializer lists are incompatible with C++98}} \
+ // expected-warning {{scalar initialized from empty initializer list is incompatible with C++98}}
(void)new int {}; // expected-warning {{generalized initializer lists are incompatible with C++98}} \
// expected-warning {{scalar initialized from empty initializer list is incompatible with C++98}}
(void)int{}; // expected-warning {{generalized initializer lists are incompatible with C++98}} \