Don't drop GHCi-defined functions with -fobject-code enabled
authorRyan Scott <ryan.gl.scott@gmail.com>
Tue, 15 Aug 2017 00:55:39 +0000 (20:55 -0400)
committerBen Gamari <ben@smart-cactus.org>
Tue, 15 Aug 2017 01:32:17 +0000 (21:32 -0400)
commitddb870bf7055ccc8ff8b86c161f31aad81d01add
tree36b59934c230c0e792496e8f51907d12d6abf980
parent0a891c8c448a0e70abb075702857d743674ad1ad
Don't drop GHCi-defined functions with -fobject-code enabled

The desugarer was using `targetRetainsAllBindings` as a litmus test for
determining if a function was defined in interactive mode (and thus
should be exported). However, there is a corner case where one can be in
interactive mode and have `targetRetainsAllBindings` return `False`: if
`-fobject-code` is enabled (since the target will no longer be
`HscInteractive`). In such a scenario, we should fall back on a
different test for determining if we are in a GHCi session. I chose to
use `isInteractiveModule`, which appears to do the trick.

Test Plan: make test TEST=T12091

Reviewers: austin, bgamari

Subscribers: rwbarton, thomie

GHC Trac Issues: #12091

Differential Revision: https://phabricator.haskell.org/D3849
compiler/deSugar/Desugar.hs
testsuite/tests/ghci/scripts/all.T