Extended defaulting rules not used for super classes
Consider the following module
{-# LANGUAGE ExtendedDefaultRules #-}
module Bug4 where
class (Num a) => C a where
f :: a -> a
instance C Integer where
f = (+1)
x = show (f 5)
The type of x is
x :: (C a) => String
and since a is ambiguous the defaulting rules should be used. Since Num is a superclass of C the type variable should be defaulted to Integer. But instead we get an error.
Removing the Num superclass of C makes it work, since the type of x is
x ::: (Num a, C a) => String
and the defaulting kicks in as expected.
Trac metadata
Trac field | Value |
---|---|
Version | 6.10.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |