]> granicus.if.org Git - clang/commitdiff
Fix the other place where C++98 work for initializer lists was necessary.
authorSebastian Redl <sebastian.redl@getdesigned.at>
Tue, 20 Mar 2012 21:24:03 +0000 (21:24 +0000)
committerSebastian Redl <sebastian.redl@getdesigned.at>
Tue, 20 Mar 2012 21:24:03 +0000 (21:24 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153129 91177308-0d34-0410-b5e6-96231b3b80d8

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

index 8a6e1ce33f3ff8c9b0e9953c4b3cb653dc7790b0..c000f69e6e15c4653553be2b962343ea2d9266e4 100644 (file)
@@ -320,9 +320,10 @@ void Parser::ParseLexedMethodDeclaration(LateParsedMethodDeclaration &LM) {
                                             LM.DefaultArgs[I].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(LM.DefaultArgs[I].Param);
index 211f11cc59778af8cf56b7c7b97215f37ce6ed23..fd70875fc81f97492d6921598f1b0b7bcb5e93b2 100644 (file)
@@ -50,6 +50,10 @@ int InitList(int i = {}) { // expected-warning {{generalized initializer lists a
   s = {}; // expected-warning {{generalized initializer lists are incompatible with C++98}}
   return { 0 }; // expected-warning {{generalized initializer lists are incompatible with C++98}}
 }
+struct DelayedDefaultArgumentParseInitList {
+  void f(int i = {1}) { // expected-warning {{generalized initializer lists are incompatible with C++98}}
+  }
+};
 
 int operator"" _hello(const char *); // expected-warning {{literal operators are incompatible with C++98}}