singletons-1.0: tests/compile-and-dump/Promote/BoundedDeriving.hs
module Promote.BoundedDeriving where
import Data.Promotion.Prelude
import Data.Promotion.TH
$(promote [d|
data Foo1 = Foo1 deriving (Bounded)
data Foo2 = A | B | C | D | E deriving (Bounded)
data Foo3 a = Foo3 a deriving (Bounded)
data Foo4 (a :: *) (b :: *) = Foo41 | Foo42 deriving Bounded
data Pair = Pair Bool Bool
deriving Bounded
|])
foo1a :: Proxy (MinBound :: Foo1)
foo1a = Proxy
foo1b :: Proxy 'Foo1
foo1b = foo1a
foo1c :: Proxy (MaxBound :: Foo1)
foo1c = Proxy
foo1d :: Proxy 'Foo1
foo1d = foo1c
foo2a :: Proxy (MinBound :: Foo2)
foo2a = Proxy
foo2b :: Proxy 'A
foo2b = foo2a
foo2c :: Proxy (MaxBound :: Foo2)
foo2c = Proxy
foo2d :: Proxy 'E
foo2d = foo2c
foo3a :: Proxy (MinBound :: Foo3 Bool)
foo3a = Proxy
foo3b :: Proxy ('Foo3 False)
foo3b = foo3a
foo3c :: Proxy (MaxBound :: Foo3 Bool)
foo3c = Proxy
foo3d :: Proxy ('Foo3 True)
foo3d = foo3c