diff options
author | Sebastian Redl <sebastian.redl@getdesigned.at> | 2012-03-20 21:24:03 +0000 |
---|---|---|
committer | Sebastian Redl <sebastian.redl@getdesigned.at> | 2012-03-20 21:24:03 +0000 |
commit | ca8937111cccdbf7d17c349487a332d6c7c97f91 (patch) | |
tree | b9206332356f24bd032dfa8f99ae5fdc909cd4f3 | |
parent | 452eac1fd71bc13c23eb034f5f66281ae27cf817 (diff) |
Fix the other place where C++98 work for initializer lists was necessary.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@153129 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Parse/ParseCXXInlineMethods.cpp | 5 | ||||
-rw-r--r-- | test/SemaCXX/cxx98-compat.cpp | 4 |
2 files changed, 7 insertions, 2 deletions
diff --git a/lib/Parse/ParseCXXInlineMethods.cpp b/lib/Parse/ParseCXXInlineMethods.cpp index 8a6e1ce33f..c000f69e6e 100644 --- a/lib/Parse/ParseCXXInlineMethods.cpp +++ b/lib/Parse/ParseCXXInlineMethods.cpp @@ -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); diff --git a/test/SemaCXX/cxx98-compat.cpp b/test/SemaCXX/cxx98-compat.cpp index 211f11cc59..fd70875fc8 100644 --- a/test/SemaCXX/cxx98-compat.cpp +++ b/test/SemaCXX/cxx98-compat.cpp @@ -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}} |