summaryrefslogtreecommitdiffstats
path: root/clang
diff options
context:
space:
mode:
authorSebastian Redl <sebastian.redl@getdesigned.at>2012-03-20 21:24:03 +0000
committerSebastian Redl <sebastian.redl@getdesigned.at>2012-03-20 21:24:03 +0000
commit6db0b1bfed0ef26365705fb8dd228a84f5e5ec10 (patch)
treeb7d37079d3a3d988fadd7e55bc60223a979c5ca0 /clang
parent61b33f7464b142fae2d3a8e35de93dded80d4c2b (diff)
downloadbcm5719-llvm-6db0b1bfed0ef26365705fb8dd228a84f5e5ec10.tar.gz
bcm5719-llvm-6db0b1bfed0ef26365705fb8dd228a84f5e5ec10.zip
Fix the other place where C++98 work for initializer lists was necessary.
llvm-svn: 153129
Diffstat (limited to 'clang')
-rw-r--r--clang/lib/Parse/ParseCXXInlineMethods.cpp5
-rw-r--r--clang/test/SemaCXX/cxx98-compat.cpp4
2 files changed, 7 insertions, 2 deletions
diff --git a/clang/lib/Parse/ParseCXXInlineMethods.cpp b/clang/lib/Parse/ParseCXXInlineMethods.cpp
index 8a6e1ce33f3..c000f69e6e1 100644
--- a/clang/lib/Parse/ParseCXXInlineMethods.cpp
+++ b/clang/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/clang/test/SemaCXX/cxx98-compat.cpp b/clang/test/SemaCXX/cxx98-compat.cpp
index 211f11cc597..fd70875fc81 100644
--- a/clang/test/SemaCXX/cxx98-compat.cpp
+++ b/clang/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}}
OpenPOWER on IntegriCloud