From: Sebastian Redl Date: Sun, 18 Mar 2012 22:25:45 +0000 (+0000) Subject: Add the missing compatibility warning for braced initializers as default arguments. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=3e280b58db5e7dc2bab736fa65af2b8157916726;p=clang 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 --- 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}} \