[GHC] #13214: Orphan instances in Backpack signatures don't work

GHC ghc-devs at haskell.org
Sun Feb 12 01:08:31 UTC 2017


#13214: Orphan instances in Backpack signatures don't work
-------------------------------------+-------------------------------------
        Reporter:  ezyang            |                Owner:  ezyang
            Type:  bug               |               Status:  patch
        Priority:  normal            |            Milestone:  8.2.1
       Component:  Compiler (Type    |              Version:  8.1
  checker)                           |
      Resolution:                    |             Keywords:  backpack
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):  Phab:D3095
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by Ben Gamari <ben@…>):

 In [changeset:"26eaa7ecde288b9dc123f3c120e70b2cf18b4e4a/ghc"
 26eaa7ec/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="26eaa7ecde288b9dc123f3c120e70b2cf18b4e4a"
 Fix #13214 by correctly setting up dep_orphs for signatures.

 Prior to this, I hadn't thought about orphan handling at all.
 This commit implements the semantics that if a signature
 (transitively) imports an orphan instance, that instance
 is considered in scope no matter what the implementing module
 is.  (As it turns out, this is the semantics that falls out
 when orphans are recorded transitively.)

 This patch fixes a few bugs:

 1. Put semantic modules in dep_orphs rather than identity
    modules.
 2. Don't put the implementing module in dep_orphs when
    merging signatures (this is a silly bug that happened
    because we were reusing calculateAvails, which is
    designed for imports. It mostly works for signature
    merging, except this case.)
 3. When renaming a signature, blast in the orphans of the
    implementing module inside Dependencies.

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

 Test Plan: validate

 Reviewers: bgamari, austin

 Reviewed By: bgamari

 Subscribers: thomie

 Differential Revision: https://phabricator.haskell.org/D3095
 }}}

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


More information about the ghc-tickets mailing list