Phantom types break new polykind Typeable with either StandaloneDeriving or AutoDeriveTypeable
This test program, reduced from an attempt to bring ekmett's tagged package to HEAD,
{-# LANGUAGE DeriveDataTypeable #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE AutoDeriveTypeable #-}
newtype Tagged s b = Tagged { unTagged :: b }
results in
GHCi, version 7.7.20130218: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer-gmp ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main ( typeable.hs, interpreted )
typeable.hs:5:1:
Derived typeable instance must be of form (Typeable Tagged)
In the stand-alone deriving instance for
`Data.Typeable.Internal.Typeable Tagged'
This message is also emitted if I replace AutoDeriveTypeable StandaloneDeriving and deriving instance Typeable Tagged.
However, a "deriving (Typeable)" clause on the newtype definition works just fine.
Trac metadata
| Trac field | Value |
|---|---|
| Version | 7.7 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |