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 |