[GHC] #14333: GHC doesn't use the fact that Coercible is symmetric

GHC ghc-devs at haskell.org
Wed Oct 18 08:37:47 UTC 2017


#14333: GHC doesn't use the fact that Coercible is symmetric
-------------------------------------+-------------------------------------
        Reporter:  Iceland_jack      |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.1
      Resolution:                    |             Keywords:  TypeFamilies,
                                     |  Roles
Operating System:  Unknown/Multiple  |         Architecture:
                                     |  Unknown/Multiple
 Type of failure:  None/Unknown      |            Test Case:
      Blocked By:                    |             Blocking:
 Related Tickets:                    |  Differential Rev(s):
       Wiki Page:                    |
-------------------------------------+-------------------------------------

Comment (by Simon Peyton Jones <simonpj@…>):

 In [changeset:"5a66d574890ed09859ca912c9e0969dba72f4a23/ghc" 5a66d57/ghc]:
 {{{
 #!CommitTicketReference repository="ghc"
 revision="5a66d574890ed09859ca912c9e0969dba72f4a23"
 Better solving for representational equalities

 This patch adds a bit of extra solving power for representational
 equality constraints to fix Trac #14333

 The main changes:

 * Fix a buglet in TcType.isInsolubleOccursCheck which wrongly
   reported a definite occurs-check error for (a ~R# b a)

 * Get rid of TcSMonad.emitInsolubles.  It had an ad-hoc duplicate-removal
   piece that is better handled in interactIrred, now that insolubles
   are Irreds.

   We need a little care to keep inert_count (which does not include
   insolubles) accurate.

 * Refactor TcInteract.solveOneFromTheOther, to return a much simpler
   type.  It was just over-complicated before.

 * Make TcInteract.interactIrred look for constraints that match
   either way around, in TcInteract.findMatchingIrreds

 This wasn't hard and it cleaned up quite a bit of code.
 }}}

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


More information about the ghc-tickets mailing list