<div dir="ltr"><div class="gmail_default" style="font-family:tahoma,sans-serif">I'm good with accepting this.</div><div class="gmail_default" style="font-family:tahoma,sans-serif"><br></div><div class="gmail_default" style="font-family:tahoma,sans-serif">Simon<br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Thu, 15 Jun 2023 at 16:51, Chris Dornan <<a href="mailto:chris@chrisdornan.com">chris@chrisdornan.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Dear Committee,<br>
<br>
Georgi Lyubenov has a simple proposal to improve the quality of life for many package maintainers that I recommend that we accept.<br>
<br>
## Split -Wunused-imports<br>
<br>
Rendered proposal: <<a href="https://github.com/googleson78/ghc-proposals/blob/split-unused-imports/proposals/0000-split-wunused-imports.md" rel="noreferrer" target="_blank">https://github.com/googleson78/ghc-proposals/blob/split-unused-imports/proposals/0000-split-wunused-imports.md</a>><br>
Discussion of proposal: <<a href="https://github.com/ghc-proposals/ghc-proposals/pull/586" rel="noreferrer" target="_blank">https://github.com/ghc-proposals/ghc-proposals/pull/586</a>><br>
<br>
### Summary<br>
<br>
(Straight from the proposal.)<br>
<br>
We propose to split the -Wunused-imports warning into two parts:<br>
<br>
- warn on actual unused imports<br>
- warn on duplicate imports<br>
<br>
while also not including the second in -Wall. This will greatly reduce "churn" for library authors.<br>
<br>
<br>
## In more Detail<br>
<br>
As we know, many Haskell developers, including significant commercial projects, incorporate -Wall<br>
-Werror into their workflow at some stage. To this end it is important that we minimise 'false<br>
negatives', whereby the compiler emits 'frivolous' warnings.<br>
<br>
This proposal identifies an important class of -Wall warnings that many package maintainers<br>
appear to regard quite bothersome, namely when the compiler warns that import statement is <br>
superflous even when it is importing an entity that is being used by the module. The issue is<br>
the way `-Wunused-imports` works, which will issue a warning for the following program.<br>
<br>
```haskell<br>
import X -- exports some function @f@<br>
import y -- exports the same function @f@<br>
<br>
g = f<br>
```<br>
<br>
The compiler will warn that the second Y import is redundant.<br>
<br>
Many developers do not want to be warned about this. As far as they are concerned each import is<br>
yielding enties that are in use and the fact that one of them can be removed is just not <br>
interesting.<br>
<br>
In contrast, developers that use -Wall do want to be warned about the following.<br>
<br>
```haskell<br>
import X -- exports some function @f@<br>
import Z -- does not export f<br>
<br>
g = f<br>
```<br>
<br>
Here our module has a completely false dependency on Z which should be cleaned up at the point that<br>
warnings are cleaned up.<br>
<br>
This proposal proposes modifying -Wunused-imports so that it will warn about the second example but<br>
stay silent for the first, and adds a -Wduplicate-imports that will issue a warning for the the<br>
first example. In effect the enabling of both warnings in the new proposal will restore the current<br>
-Wunused-imports behaviour. -Wall should *not* enable -Wduplicate-imports but is avilable to those<br>
developers that rely on the current behaviour of -Wunused-imports (which some clearly do).<br>
<br>
<br>
## Recommendation<br>
<br>
I recommend that we accept this proposal.<br>
<br>
_______________________________________________<br>
ghc-steering-committee mailing list<br>
<a href="mailto:ghc-steering-committee@haskell.org" target="_blank">ghc-steering-committee@haskell.org</a><br>
<a href="https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee" rel="noreferrer" target="_blank">https://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-steering-committee</a><br>
</blockquote></div>