<div dir="ltr"><br><div>Through a <a href="https://git.haskell.org/ghc.git/commitdiff/aead01902e1c41e85b758dbafd15e60d08956374">patch</a> by Oleg Grenrus (phadej), GHC 8 will have the following new flags:<br> -fwarn-unused-top-binds<br> -fwarn-unused-local-binds<br> -fwarn-unused-pattern-binds<br><br></div><div>So you'll be able to pick and choose.<br></div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 3, 2015 at 6:47 PM, Evan Laforge <span dir="ltr"><<a href="mailto:qdunkan@gmail.com" target="_blank">qdunkan@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">[ ccing haskell-cafe since while it's a ghc flag, I'll bet most<br>
compilers have an equivalent ]<br>
<br>
I really like -fwarn-unused-binds because it frequently finds bugs<br>
where I forgot to call something or use some value.  If I put an<br>
export list on, it can find dead functions I forgot to delete.<br>
However, there's one case where it frequently gives false positives,<br>
and that's unused record field names.  The problem is that I sometimes<br>
use record field names as documentation, but the record itself is<br>
internal and small, so I'm comfortable using positional pattern<br>
matching to open it (and in fact that can be safer, since then<br>
warn-unused-binds will make sure I used all the fields).  But GHC sees<br>
these as unused functions, so it warns about them.  I can work around<br>
by putting underscores on field names I haven't used yet, but it's a<br>
hassle to go edit them when I want to use them.  The warning can be<br>
useful if it indicates an unused field, but since fields can also be<br>
extracted via the positional syntax it's not reliable.  The other use<br>
of the warning for dead code or functions you forgot to use doesn't<br>
apply to record accessors because they're trivial and compiler<br>
generated.<br>
<br>
So, would it be reasonable to exclude record field accessors from<br>
-fwarn-unused-binds?  Or is there another way to work around it?  I<br>
guess GHC doesn't have a "suppress warning" pragma like Java does, but<br>
even if we did it wouldn't be much better than changing the name, and<br>
more likely to get stale.<br>
_______________________________________________<br>
Glasgow-haskell-users mailing list<br>
<a href="mailto:Glasgow-haskell-users@haskell.org">Glasgow-haskell-users@haskell.org</a><br>
<a href="http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users" rel="noreferrer" target="_blank">http://mail.haskell.org/cgi-bin/mailman/listinfo/glasgow-haskell-users</a><br>
</blockquote></div><br></div>