[GHC] #14047: "Illegal instance for type synonym" while deriving Typeable1 for data type
GHC
ghc-devs at haskell.org
Fri Jul 28 08:31:43 UTC 2017
#14047: "Illegal instance for type synonym" while deriving Typeable1 for data type
---------------------------------+--------------------------------------
Reporter: alexbiehl | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Compiler | Version: 8.2.1
Resolution: | Keywords:
Operating System: Windows | Architecture: x86_64 (amd64)
Type of failure: None/Unknown | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
---------------------------------+--------------------------------------
Description changed by alexbiehl:
Old description:
> This occured to me in `network-ip` package today:
>
> {{{#!hs
> {-# LANGUAGE StandaloneDeriving #-}
> module Repro where
>
> import Data.Typeable (Typeable1)
>
> data InetAddr a = InetAddr
> deriving instance Typeable1 InetAddr
> }}}
>
> Results in GHC complaining with:
>
> {{{#!hs
> repro.hs:7:19: error:
> * Illegal instance for a type synonym
> A class instance must be for a class
> * In the stand-alone deriving instance for `Typeable1 InetAddr'
> |
> 7 | deriving instance Typeable1 InetAddr
> | ^^^^^^^^^^^^^^^^^^
> }}}
>
> This is due to `Typeable1` defined as type synonym for `Typeable` (see
> here http://hackage.haskell.org/package/base-4.10.0.0/docs/Data-
> Typeable.html#t:Typeable1).
>
> I can see it is deprecated but I would still expect it to work correctly
> still.
New description:
This occured to me in `network-ip` package today:
{{{#!hs
{-# LANGUAGE StandaloneDeriving #-}
module Repro where
import Data.Typeable (Typeable1)
data InetAddr a = InetAddr
deriving instance Typeable1 InetAddr
}}}
Results in GHC complaining with:
{{{#!hs
repro.hs:7:19: error:
* Illegal instance for a type synonym
A class instance must be for a class
* In the stand-alone deriving instance for `Typeable1 InetAddr'
|
7 | deriving instance Typeable1 InetAddr
| ^^^^^^^^^^^^^^^^^^
}}}
This is due to `Typeable1` defined as type synonym for `Typeable` (see
here http://hackage.haskell.org/package/base-4.10.0.0/docs/Data-
Typeable.html#t:Typeable1).
I see it is deprecated but I would still expect it to work correctly
still.
--
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14047#comment:1>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list