[GHC] #14584: Core Lint error

GHC ghc-devs at haskell.org
Wed Dec 20 10:20:48 UTC 2017


#14584: Core Lint error
-------------------------------------+-------------------------------------
        Reporter:  Iceland_jack      |                Owner:  (none)
            Type:  bug               |               Status:  new
        Priority:  normal            |            Milestone:
       Component:  Compiler          |              Version:  8.2.1
      Resolution:                    |             Keywords:  TypeInType,
                                     |  DeferredTypeErrors
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 simonpj):

 > What if co2 ends up being filled in with a coercion that mentions x?

 Excellent question!  But even a more complicated floating isn't enough.
 Suppose `co2` ''is'' actually solved.  Then its binding will live in the
 inner implication; so we then can't float `co1`.  And if that solved
 binding did mention `x`, then we should presumably not float `co1`.
 Yikes.  This works today because: if `co2` is solved, when we zonk `co1`
 we'll see all the free vars of `co1` (because of the update in place
 stuff).

 In truth, if coercions generated bindings in the implication, we'd have to
 float them too, assuming none of them mention the skolemised variables.

 Bottom line: it seems delicate, but yes perhaps doing transitive capture
 would nail it.

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


More information about the ghc-tickets mailing list