[GHC] #11699: Type families mistakingly report kind variables as unbound type variables
GHC
ghc-devs at haskell.org
Fri Mar 11 14:51:02 UTC 2016
#11699: Type families mistakingly report kind variables as unbound type variables
-------------------------------------+-------------------------------------
Reporter: mniip | Owner:
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.0.1-rc2
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:
-------------------------------------+-------------------------------------
GHC verifies that if some equation of a type family binds a type variable,
that this type variable actually exists and doesn't disappear through type
synonym/family application (#7536). However this also mistakingly catches
kind variables that aren't present in the type family head.
Simplest test case:
{{{#!hs
{-# LANGUAGE TypeFamilies, PolyKinds #-}
type family F a where F (f a) = f a
}}}
As seen on 8.0.1-rc2 and 7.10.2:
{{{
../File.hs:3:23:
Family instance purports to bind type variable ‘k1’
but the real LHS (expanding synonyms) is: F (f a) = ...
In the equations for closed type family ‘F’
In the type family declaration for ‘F’
}}}
The culprit seems to be in `exactTyCoVarsOfType`, which doesn't grab kind
variables from a type variable's kind, even though `tyCoVarsOfType` does.
Now, I'm not too sure whether this is a "GHC rejects valid program", or
"Incorrect warning at compile time", as I'm not sure if type families like
the aforementioned `F` are actually okay. (Are they?)
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/11699>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list