]> granicus.if.org Git - clang/commitdiff
Add the missing compatibility warning for braced initializers as default arguments.
authorSebastian Redl <sebastian.redl@getdesigned.at>
Sun, 18 Mar 2012 22:25:45 +0000 (22:25 +0000)
committerSebastian Redl <sebastian.redl@getdesigned.at>
Sun, 18 Mar 2012 22:25:45 +0000 (22:25 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153026 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Parse/ParseDecl.cpp
test/SemaCXX/cxx98-compat.cpp

index 2fac0dca40253b4be04c792f4e78d8c8c9227de5..6f344f66914c3872c6ef9741395f7621a0bef2b8 100644 (file)
@@ -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);
index 903932c1897c15cfa72cd7134041c8b0b436a6c2..211f11cc59778af8cf56b7c7b97215f37ce6ed23 100644 (file)
@@ -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}} \