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 |