[PATCH] D18395: -Wshadow: don't warn on ctor parameters with the same name as a field name
David Blaikie via cfe-commits
cfe-commits at lists.llvm.org
Wed Mar 23 09:30:30 PDT 2016
Ah, now I see your follow-up email. Soryr I missed it...
On Wed, Mar 23, 2016 at 9:30 AM, David Blaikie <dblaikie at gmail.com> wrote:
> Reid sent out a different patch for this warning improvement. Have you
> checked that one out? Is it abandoned?
>
> I'm still a bit concerned about whitelisting all these cases & not
> catching cases where the parameter is then used inside the function in some
> problematic way (the classic being a unique_ptr parameter, moved into a
> member, then the parameter (instead of the member) is referenced in the
> body of the function).
>
> On Wed, Mar 23, 2016 at 7:43 AM, Alexander Kornienko via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>> alexfh created this revision.
>> alexfh added reviewers: rsmith, rnk.
>> alexfh added a subscriber: cfe-commits.
>>
>> -Wshadow: don't warn on ctor parameters with the same name as a field
>> name. This fixes a broad class of false positives resulting from a widely
>> used
>> pattern:
>>
>> struct A {
>> int q;
>> A(int q) : q(q) {}
>> };
>>
>> Fixes http://llvm.org/PR16088.
>>
>> http://reviews.llvm.org/D18395
>>
>> Files:
>> lib/Sema/SemaDecl.cpp
>> test/SemaCXX/warn-shadow.cpp
>>
>> Index: test/SemaCXX/warn-shadow.cpp
>> ===================================================================
>> --- test/SemaCXX/warn-shadow.cpp
>> +++ test/SemaCXX/warn-shadow.cpp
>> @@ -71,6 +71,14 @@
>> };
>> }
>>
>> +// http://llvm.org/PR16088
>> +namespace PR16088 {
>> +struct S {
>> + int i;
>> + S(int i) : i(i) {}
>> +};
>> +}
>> +
>> extern int bob; // expected-note {{previous declaration is here}}
>>
>> // rdar://8883302
>> Index: lib/Sema/SemaDecl.cpp
>> ===================================================================
>> --- lib/Sema/SemaDecl.cpp
>> +++ lib/Sema/SemaDecl.cpp
>> @@ -6406,6 +6406,11 @@
>> }
>> }
>>
>> + // Don't warn on constructor parameters with the same name as a field
>> name.
>> + if (isa<FieldDecl>(ShadowedDecl) && isa<CXXConstructorDecl>(NewDC) &&
>> + isa<ParmVarDecl>(D))
>> + return;
>> +
>> DeclContext *OldDC = ShadowedDecl->getDeclContext();
>>
>> // Only warn about certain kinds of shadowing for class members.
>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20160323/86db2621/attachment.html>
More information about the cfe-commits
mailing list