rsmith added inline comments.
================
Comment at: lib/Sema/SemaDecl.cpp:6437-6445
@@ +6436,11 @@
+ // Warn immediately if -Wshadow-field-in-constructor is set.
+ Diag(R.getNameLoc(), diag::warn_ctor_parm_shadows_field)
+ << D << FD << FD->getParent();
+ Diag(FD->getLocation(), diag::note_previous_declaration);
+ // Remember that this was shadowed so we can warn later if it is
+ // modified.
+ ShadowingDecls.insert({D, FD});
+ return;
+ }
+ }
+
----------------
Here's what I was thinking:
* The new warning goes in its own group, say
`-Wshadow-field-in-constructor-modified`
* The new warning group is part of both `-Wshadow` and
`-Wshadow-field-in-constructor`
* We produce the `-Wshadow-field-in-constructor` warning from `ActOnPopScope`
whenever we remove something from the map.
This means that our behavior is as if `-W` flags filter our warning output, and
we only get one warning for each instance of shadowing, and
`-Wshadow-field-in-constructor` can be used to control all
constructor-parameter-shadows-field warnings (and even obscure cases like
`-Wshadow -Wno-shadow-field-in-constructor` do what they look like they should
do).
http://reviews.llvm.org/D18271
_______________________________________________
cfe-commits mailing list
[email protected]
http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits