[cfe-commits] r129985 - in /cfe/trunk: include/clang/Basic/DiagnosticSemaKinds.td lib/Sema/SemaDecl.cpp test/SemaCXX/MicrosoftExtensions.cpp
Francois Pichet
pichet2000 at gmail.com
Fri Apr 22 12:56:39 PDT 2011
On Fri, Apr 22, 2011 at 11:24 AM, Eli Friedman <eli.friedman at gmail.com> wrote:
> On Fri, Apr 22, 2011 at 1:14 AM, Francois Pichet <pichet2000 at gmail.com> wrote:
>> Author: fpichet
>> Date: Fri Apr 22 03:14:00 2011
>> New Revision: 129985
>>
>> URL: http://llvm.org/viewvc/llvm-project?rev=129985&view=rev
>> Log:
>> Downgrade error "static declaration of 'foo' follows non-static declaration" to a warning in Microsoft mode.
>>
>> Modified:
>> cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>> cfe/trunk/lib/Sema/SemaDecl.cpp
>> cfe/trunk/test/SemaCXX/MicrosoftExtensions.cpp
>>
>> Modified: cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td?rev=129985&r1=129984&r2=129985&view=diff
>> ==============================================================================
>> --- cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td (original)
>> +++ cfe/trunk/include/clang/Basic/DiagnosticSemaKinds.td Fri Apr 22 03:14:00 2011
>> @@ -2124,6 +2124,8 @@
>> "inline declaration of %0 not allowed in block scope">;
>> def err_static_non_static : Error<
>> "static declaration of %0 follows non-static declaration">;
>> +def warn_static_non_static : ExtWarn<
>> + "static declaration of %0 follows non-static declaration">;
>> def err_non_static_static : Error<
>> "non-static declaration of %0 follows static declaration">;
>> def err_extern_non_extern : Error<
>>
>> Modified: cfe/trunk/lib/Sema/SemaDecl.cpp
>> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/SemaDecl.cpp?rev=129985&r1=129984&r2=129985&view=diff
>> ==============================================================================
>> --- cfe/trunk/lib/Sema/SemaDecl.cpp (original)
>> +++ cfe/trunk/lib/Sema/SemaDecl.cpp Fri Apr 22 03:14:00 2011
>> @@ -1258,8 +1258,10 @@
>> New->getStorageClass() == SC_Static &&
>> Old->getStorageClass() != SC_Static &&
>> !canRedefineFunction(Old, getLangOptions())) {
>> - Diag(New->getLocation(), diag::err_static_non_static)
>> - << New;
>> + unsigned DiagID = diag::err_static_non_static;
>> + if (getLangOptions().Microsoft)
>> + DiagID = diag::warn_static_non_static;
>> + Diag(New->getLocation(), DiagID) << New;
>> Diag(Old->getLocation(), PrevDiag);
>> return true;
>> }
>
> You can't just "return true" in the non-error case; some sort of
> recovery is required.
>
right, see r130010. i think just avoiding return true is ok.
More information about the cfe-commits
mailing list