Ticket #5015 (closed bug: invalid)
Can't unsafeCoerce a GADT with a coercion
Description
type family Blah a type instance Blah Int = Int data E where E :: (Blah a ~ Int) => a -> E
*Example Unsafe.Coerce GHC.Prim> (unsafeCoerce E) :: Any
<interactive>:1:15:
Couldn't match type `Blah a0' with `Int'
In the first argument of `unsafeCoerce', namely `E'
In the expression: (unsafeCoerce E) :: Any
In an equation for `it': it = (unsafeCoerce E) :: Any
This also doesn't work with less dangerous operators, like seq:
*Example Unsafe.Coerce GHC.Prim> (id E) `seq` ()
<interactive>:1:5:
Couldn't match type `Blah a0' with `Int'
In the first argument of `id', namely `E'
In the first argument of `seq', namely `(id E)'
In the expression: (id E) `seq` ()
Change History
Note: See
TracTickets for help on using
tickets.
