[cfe-commits] r70784 - in /cfe/trunk: lib/Sema/Sema.h lib/Sema/SemaDecl.cpp lib/Sema/SemaTemplate.cpp test/SemaCXX/struct-class-redecl.cpp test/SemaCXX/typedef-redecl.cpp test/SemaTemplate/class-template-decl.cpp

Douglas Gregor dgregor at apple.com
Mon May 18 11:46:34 PDT 2009


On May 14, 2009, at 10:56 AM, Sebastian Redl wrote:

> Douglas Gregor wrote:
>>
>> On May 3, 2009, at 12:10 PM, Sebastian Redl wrote:
>>
>>>
>>> On Sun, 03 May 2009 17:18:57 -0000, Douglas Gregor <dgregor at apple.com 
>>> >
>>> wrote:
>>>> Author: dgregor
>>>> Date: Sun May  3 12:18:57 2009
>>>> New Revision: 70784
>>>>
>>>> URL: http://llvm.org/viewvc/llvm-project?rev=70784&view=rev
>>>> Log:
>>>> One can use "class" and "struct" interchangeably to refer to a  
>>>> class
>>>> in C++. Fixes <rdar://problem/6815995>.
>>>>
>>>
>>> We might want a default-off warning that warns if the wrong tag is
>>> used for
>>> the redeclaration. This could help Clang users find MSVC
>>> interoperability
>>> issues, since MSVC warns about this by default.
>>
>> Implemented here:
>>
>>    http://lists.cs.uiuc.edu/pipermail/cfe-commits/Week-of-Mon-20090511/017242.html
>>
>>
>> Thanks for the suggestion!
>
> I can't find the commit mail in my inbox or my trash, so I'm going to
> reply here.
>
>
> I'd write this diagnostic:
>
> +def warn_struct_class_tag_mismatch : Warning<
> +    "%select{struct|class}0 %select{|template}1 %2 was previously  
> declared "
> +    "as a %select{struct|class}3 %select{|template}1">,
> +    InGroup<MismatchedTags>, DefaultIgnore;
>
>
> simply as
>
> +def warn_struct_class_tag_mismatch : Warning<
> +    "%select{struct|class}0 %select{|template}1 %2 was previously  
> declared "
> +    "as a %select{class|struct}0 %select{|template}1">,
> +    InGroup<MismatchedTags>, DefaultIgnore;
>
> and forget about the fourth parameter. The two cases are guaranteed to
> be symmetric.

Good idea! Done in r72027.

   - Doug



More information about the cfe-commits mailing list