GeneralizedNewtypeDeriving should fail with data families
Here is an example:
{-# LANGUAGE GeneralizedNewtypeDeriving, TypeFamilies #-}
module Foo where
data family T a
data instance T Int = T_Int Int
class C a where
foo :: a -> T a
instance C Int where
foo = T_Int
newtype Foo = Foo Int deriving(C)
The deriving(C)
clause on Foo
should fail but instead it derives an instance which can't possible be correct since there is no corresponding data instance T Foo
. This is closely related to #2721 (closed) (where newtype deriving was disabled in the presence of associated types) but much more difficult to test for. Probably also related to #1496 (closed).
Trac metadata
Trac field | Value |
---|---|
Version | 7.2.1 |
Type | Bug |
TypeOfFailure | OtherFailure |
Priority | normal |
Resolution | Unresolved |
Component | Compiler |
Test case | |
Differential revisions | |
BlockedBy | |
Related | |
Blocking | |
CC | |
Operating system | |
Architecture |