Iface type variable out of scope with default associated types and polykinds
I have
{-# LANGUAGE DataKinds, PolyKinds, TypeFamilies #-}
module A where
import Data.Proxy
class kproxy ~ 'KProxy => PEq (kproxy :: KProxy a) where
type F (x :: a) :: Bool
type F (x :: a) = False
{-# LANGUAGE DataKinds, KindSignatures, TypeFamilies #-}
module B where
import A
import Data.Proxy
data Void
instance PEq ('KProxy :: KProxy Void)
module C where
import B
Now, this happens in a terminal window:
rae:21:38:44 ~/temp> ghc A.hs
[1 of 1] Compiling A ( A.hs, A.o )
rae:21:38:46 ~/temp> ghc B.hs
[2 of 2] Compiling B ( B.hs, B.o )
rae:21:38:47 ~/temp> ghc C.hs
[3 of 3] Compiling C ( C.hs, C.o )
The interface for ‘B’
Declaration for R:FVoidx:
Iface type variable out of scope: a
Cannot continue after interface file error
If any two of the files are compiled together, the error does not occur. The emptiness of the Void type is irrelevant -- the error initially occurred with an inhabited type.
This is a regression from 7.8.2.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.9 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |