
#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