
#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 goldfire): Why doesn't `co2` float out? We really shouldn't float `co1` out if we don't float `co2` out. The fact that it works without deferred type errors is just a fluke, really. (What if `co2` ends up being filled in with a coercion that mentions `x`?) I think this can be fixed just by adding a little more logic to the float- out code. Unfortunately, it also means that we need to calculate floating- out in dependency order (so we can process `co2` before even looking at `co1`. It makes the floating-out code a little more intricate, but the complication should be quite local. Does that sound reasonable? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/14584#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler