[cfe-dev] Patch: Re: -Wshadow rationale for data members

John McCall rjmccall at apple.com
Fri Oct 29 15:52:28 PDT 2010


On Oct 29, 2010, at 3:45 PM, Axel Naumann wrote:

> Hi,
> 
> On 10/21/10 7:38 PM, John McCall wrote:
>> On Oct 21, 2010, at 8:17 AM, Douglas Gregor wrote:
>>> On Oct 21, 2010, at 2:43 AM, Axel Naumann wrote:
>>>> struct A {
>>>> static void* f; void* g;
>>>> struct B { static void* f; void* g; };
>>>> };
>>>> struct C { static void* f; void* g;};
>>>> struct D: public C { static void* f; void* g; };
>>>> 
>>>> compiled with
>>>> clang++ -c -Wall -Wshadow -O2 t.cxx
>>>> generates the warning
>>>> 
>>>> t.cxx:3:28: warning: declaration shadows a static data member of 'A'
>>>> [-Wshadow]
>>>> struct B { static void* f; void* g; };
>>>>                         ^
>>>> t.cxx:2:17: note: previous declaration is here
>>>> static void* f; void* g;
>>>>              ^
>>> 
>>> It doesn't seem at all useful for Clang to warn about static data members shadowing something else by the same name. Personally, I'd limit -Wshadow to only complain when a local declaration shadows something from the outer scope.
>> 
>> I agree.
> 
> You mean like in the attached patch? The corresponding tests still to be
> updated (removed, mostly), i.e. please don't commit :-)

Yeah, I guess that's what we're looking for.  Please lift the comment up into the block comment above the if statement, though.

John.



More information about the cfe-dev mailing list