
#11348: Local open type families instances ignored during type checking -------------------------------------+------------------------------------- Reporter: alexvieth | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: Compiler | Version: 8.0.1-rc1 Resolution: | Keywords: Operating System: Unknown/Multiple | Architecture: Type of failure: GHC rejects | Unknown/Multiple valid program | Test Case: Blocked By: | Blocking: Related Tickets: | Differential Rev(s): Wiki Page: | -------------------------------------+------------------------------------- Comment (by alexvieth):
Why should the instance declarations affect the kind of the type constructor?
We could always find type families mentioned in GADT data constructors, but with GADT data constructor promotion, we can therefore find these families mentioned in kinds: {{{#!hs type family TrivialFamily (t :: Type) :: Type type instance TrivialFamily t = Bool data Q where Q :: TrivialFamily Int -> Q -- The type of the data constructor Q :: Bool -> Q -- The kind of the promoted data constructor. -- GHC actually gives 'Q :: TrivialFamily Int -> Q -- but it *should* flatten that to Bool. 'Q :: Bool -> Q -- This will not kind-check, unless we import the -- TrivialFamily t instance. type Problem = 'Q 'True }}} To check that a use of `'Q` is well-kinded, we must know `TrivialFamily Int`. Pardon my earlier comment, this bug can arise ''without'' switching on `TypeInType`.
If you're up to this task, that would be wonderful.
Absolutely. This bug is blocking a project of mine so I want it fixed asap. -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/11348#comment:4 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler