Fix unused-import warnings
This patch fixes a fairly long-standing bug (dating back to 2015) in
commit 9376249b6b78610db055a10d05f6592d6bbbea2f Author: Simon Peyton Jones <email@example.com> Date: Wed Oct 28 17:16:55 2015 +0000 Fix unused-import stuff in a better way
In that patch got the sense of the comparison back to front, and
thereby failed to implement the unused-import rules described in
Note [Choosing the best import declaration] in RdrName
Fixing this bug revealed a bunch of unused imports in libraries;
the ones in the GHC repo are part of this commit.
The two important changes are
- Fix the bug in bestImport
- Modified the rules by adding (a) in Note [Choosing the best import declaration] in RdrName Reason: the previosu rules made Trac Trac #5211 go bad again. And the new rule (a) makes sense to me.
In unravalling this I also ended up doing a few other things
- Refactor RnNames.ImportDeclUsage to use a [GlobalRdrElt] for the things that are used, rather than [AvailInfo]. This is simpler and more direct.
- Rename greParentName to greParent_maybe, to follow GHC naming conventions
- Delete dead code RdrName.greUsedRdrName
Bumps a few submodules.
Reviewers: hvr, goldfire, bgamari, simonmar, jrtc27
Subscribers: rwbarton, carter
Differential Revision: https://phabricator.haskell.org/D5312