getC: Type signature needed when existential types are used but not in the type signature
This module:
{-# OPTIONS -fglasgow-exts #-}
module Q where
import Data.Typeable
data ExTypeable = forall a. Typeable a => ExTypeable a
-- unExTypeable :: Typeable h => ExTypeable -> Maybe h
unExTypeable (ExTypeable a) = cast a
with the type signature commented out gives this in the HEAD:
q.hs:10:30:
Could not deduce (Typeable b) from the context (Typeable a)
arising from a use of `cast' at q.hs:10:30-35
Possible fix:
add (Typeable b) to the context of the constructor `ExTypeable'
In the expression: cast a
In the definition of `unExTypeable':
unExTypeable (ExTypeable a) = cast a
It works in 6.6.
It's part of the getC test.
Trac metadata
Trac field | Value |
---|---|
Version | 6.6.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | high |
Resolution | Unresolved |
Component | Compiler (Type checker) |
Test case | getC |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | Unknown |
Architecture | Unknown |