<div dir="ltr">Reid sent out a different patch for this warning improvement. Have you checked that one out? Is it abandoned?<br><br>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).<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Mar 23, 2016 at 7:43 AM, Alexander Kornienko via cfe-commits <span dir="ltr"><<a href="mailto:cfe-commits@lists.llvm.org" target="_blank">cfe-commits@lists.llvm.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">alexfh created this revision.<br>
alexfh added reviewers: rsmith, rnk.<br>
alexfh added a subscriber: cfe-commits.<br>
<br>
-Wshadow: don't warn on ctor parameters with the same name as a field<br>
name. This fixes a broad class of false positives resulting from a widely used<br>
pattern:<br>
<br>
  struct A {<br>
    int q;<br>
    A(int q) : q(q) {}<br>
  };<br>
<br>
Fixes <a href="http://llvm.org/PR16088" rel="noreferrer" target="_blank">http://llvm.org/PR16088</a>.<br>
<br>
<a href="http://reviews.llvm.org/D18395" rel="noreferrer" target="_blank">http://reviews.llvm.org/D18395</a><br>
<br>
Files:<br>
  lib/Sema/SemaDecl.cpp<br>
  test/SemaCXX/warn-shadow.cpp<br>
<br>
Index: test/SemaCXX/warn-shadow.cpp<br>
===================================================================<br>
--- test/SemaCXX/warn-shadow.cpp<br>
+++ test/SemaCXX/warn-shadow.cpp<br>
@@ -71,6 +71,14 @@<br>
 };<br>
 }<br>
<br>
+// <a href="http://llvm.org/PR16088" rel="noreferrer" target="_blank">http://llvm.org/PR16088</a><br>
+namespace PR16088 {<br>
+struct S {<br>
+  int i;<br>
+  S(int i) : i(i) {}<br>
+};<br>
+}<br>
+<br>
 extern int bob; // expected-note {{previous declaration is here}}<br>
<br>
 // rdar://8883302<br>
Index: lib/Sema/SemaDecl.cpp<br>
===================================================================<br>
--- lib/Sema/SemaDecl.cpp<br>
+++ lib/Sema/SemaDecl.cpp<br>
@@ -6406,6 +6406,11 @@<br>
         }<br>
     }<br>
<br>
+  // Don't warn on constructor parameters with the same name as a field name.<br>
+  if (isa<FieldDecl>(ShadowedDecl) && isa<CXXConstructorDecl>(NewDC) &&<br>
+      isa<ParmVarDecl>(D))<br>
+    return;<br>
+<br>
   DeclContext *OldDC = ShadowedDecl->getDeclContext();<br>
<br>
   // Only warn about certain kinds of shadowing for class members.<br>
<br>
<br>
<br>_______________________________________________<br>
cfe-commits mailing list<br>
<a href="mailto:cfe-commits@lists.llvm.org">cfe-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits" rel="noreferrer" target="_blank">http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits</a><br>
<br></blockquote></div><br></div>