
#11715: Constraint vs * -------------------------------------+------------------------------------- Reporter: bgamari | Owner: goldfire Type: bug | Status: new Priority: highest | Milestone: 8.4.1 Component: Compiler (Type | Version: 8.0.1-rc1 checker) | Keywords: Typeable, Resolution: | LevityPolymorphism, Roles Operating System: Unknown/Multiple | Architecture: | Unknown/Multiple Type of failure: None/Unknown | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Phab:D3316 Wiki Page: | -------------------------------------+------------------------------------- Changes (by simonpj): * differential: => Phab:D3316 Comment: OK, so Phab:D3316 is a compromise fix for GHC 8.2. It re-introduces the `tcView`/`coreView` split, making `Type` and `Constraint` distinct in the typechecker and the same there after. We regard this as a stop-gap solution, pending making `Type` and `Constraint` distinct througout the compiler. However, `T11480b` currently fails with Phab:D3316: see comment:69 for why. The plan: * Make the pure unifier use `tcView` not `coreView`. That should fix `T11480b`. * Ensure that `Typeable Type` and `Typeable Constraint` produce different representations; that will fix comment:71 opf #11715 * Accept that a Core program can be unsound, in an obscure way, so long as the stop-gap solution holds. (We don't know any way to exploit this unsoundness from Haskell though.) We should get on with the real solution for 8.4 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11715#comment:74 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler