Deriving a class via an instance that has a TypeError constraint using standalone deriving fails during compilation.
This bug occurs if I define an instance for a typeclass adding a TypeError constraint on the instance, and then I try to derive that instance using Deriving Via in combination with StandaloneDeriving. This is the shortest example I was able to come up with:
{-# Language DataKinds, UndecidableInstances, StandaloneDeriving, DerivingVia #-}
import GHC.TypeLits
newtype NotNum a = NotNum a
instance (TypeError (Text "Not a num")) => Num (NotNum a) where
data Foo = Foo
deriving via (NotNum Foo) instance Num Foo
In this case, it'll fail in compilation with 'Not a Num'.
This only seems to happen when combining deriving via with standalone deriving, because if I derive the class like:
data Foo = Foo deriving Num via (NotNum Foo)
It works as expected (doesn't fail with my custom error until I actually try to use a Foo where I should use a Num)
Trac metadata
| Trac field | Value |
|---|---|
| Version | 8.6.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture |