Fix unused-import warnings

Authored by DavidEichmann on Nov 22 2018, 1:48 PM.


Fix unused-import warnings

This patch fixes a fairly long-standing bug (dating back to 2015) in
RdrName.bestImport, namely

commit 9376249b6b78610db055a10d05f6592d6bbbea2f
Author: Simon Peyton Jones <>
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

This led to Trac Trac #13064 and Trac #15393

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:


bgamariNov 22 2018, 3:10 PM
Differential Revision
D5312: Fix unused-import warnings
rGHC8d008b71db53: Don't pass -no-pie when -pgmc is supplied