[GHC] #2182: ghc sessions (--make, --interactive, ghc api) erroneously retain instances

GHC ghc-devs at haskell.org
Sun Nov 30 09:37:53 UTC 2014


#2182: ghc sessions (--make, --interactive, ghc api) erroneously retain instances
-------------------------------------+-------------------------------------
              Reporter:  claus       |            Owner:  ezyang
                  Type:  bug         |           Status:  new
              Priority:  normal      |        Milestone:  7.10.1
             Component:  Compiler    |          Version:  6.9
  (Type checker)                     |         Keywords:
            Resolution:              |     Architecture:  Unknown/Multiple
      Operating System:              |       Difficulty:  Unknown
  Unknown/Multiple                   |       Blocked By:
       Type of failure:  GHC         |  Related Tickets:
  accepts invalid program            |
             Test Case:              |
              Blocking:              |
Differential Revisions:  Phab:D488   |
-------------------------------------+-------------------------------------

Comment (by Edward Z. Yang <ezyang@…>):

 In [changeset:"4c834fdddf4d44d12039da4d6a2c63a660975b95/ghc"]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="4c834fdddf4d44d12039da4d6a2c63a660975b95"
 Filter instance visibility based on set of visible orphans, fixes #2182.

 Summary:
 Amazingly, the fix for this very old bug is quite simple: when type-
 checking,
 maintain a set of "visible orphan modules" based on the orphans list of
 modules which we explicitly imported.  When we import an instance and it
 is an orphan, we check if it is in the visible modules set, and if not,
 ignore it.  A little bit of refactoring for when orphan-hood is calculated
 happens so that we always know if an instance is an orphan or not.

 For GHCi, we preinitialize the visible modules set based on the list of
 interactive imports which are active.

 Future work: Cache the visible orphan modules set for GHCi, rather than
 recomputing it every type-checking round.  (But it's tricky what to do
 when you
 /remove/ a module: you need a data structure a little more complicated
 than
 just a set of modules.)

 Signed-off-by: Edward Z. Yang <ezyang at cs.stanford.edu>

 Test Plan: new tests and validate

 Reviewers: simonpj, austin

 Subscribers: thomie, carter

 Differential Revision: https://phabricator.haskell.org/D488

 GHC Trac Issues: #2182
 }}}

--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/2182#comment:12>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler


More information about the ghc-tickets mailing list