Template Haskell gets confused with scoped kind variables in a class declaration
When I say
{-# LANGUAGE TemplateHaskell, DataKinds, PolyKinds, TypeFamilies #-}
module Bug where
import Data.Proxy
$( [d|
class kproxy ~ 'KProxy => C (kproxy :: KProxy a) where
type TF (x :: a) :: Bool
|])
I get
/Users/rae/temp/Bug.hs:7:4:
Kind variable also used as type variable: ‘a_asJA’
In the declaration for class C_asJy
/Users/rae/temp/Bug.hs:7:4:
The exact Name ‘kproxy_asJB’ is not in scope
Probable cause: you used a unique Template Haskell name (NameU),
perhaps via newName, but did not bind it
If that's it, then -ddump-splices might be useful
The code in the TH quote compiles fine on its own.
Trac metadata
Trac field | Value |
---|---|
Version | 7.8.2 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Template Haskell |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |