summaryrefslogtreecommitdiff
path: root/testsuite/tests/generics/GenCannotDoRep0_0.hs
blob: 10d4dbfb7b9c0790e7835eee7088efb3efd1dc13 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
{-# LANGUAGE DeriveGeneric              #-}
{-# LANGUAGE ExistentialQuantification  #-}
{-# LANGUAGE StandaloneDeriving         #-}
{-# LANGUAGE FlexibleInstances          #-}
{-# LANGUAGE TypeFamilies               #-}
{-# LANGUAGE DatatypeContexts           #-}

module CannotDoRep0_0 where

import GHC.Generics hiding (P, D)

-- We do not support existential quantification
data Dynamic = forall a. Dynamic a deriving Generic

-- Partial instantiation of types is not allowed
data P a = P a
deriving instance Generic (P Int)

-- This gets trickier for data families
data family D a b
data instance D Char b
data instance (Show b) => D Int b
data instance D () ()

-- Bad: second argument is instantiated
deriving instance Generic (D Char Char)
-- Bad: has context
deriving instance Generic (D Int a)
-- Ok
deriving instance Generic (D () ())