packages feed

singletons-1.0: tests/compile-and-dump/Promote/BoundedDeriving.ghc78.template

Promote/BoundedDeriving.hs:0:0: Splicing declarations
    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) |]
  ======>
    Promote/BoundedDeriving.hs:(0,0)-(0,0)
    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)
    instance PBounded (KProxy :: KProxy Foo1) where
      type MinBound = Foo1
      type MaxBound = Foo1
    type Foo1Sym0 = Foo1
    instance PBounded (KProxy :: KProxy Foo2) where
      type MinBound = A
      type MaxBound = E
    type ASym0 = A
    type BSym0 = B
    type CSym0 = C
    type DSym0 = D
    type ESym0 = E
    instance PBounded (KProxy :: KProxy (Foo3 k)) where
      type MinBound = Foo3 MinBound
      type MaxBound = Foo3 MaxBound
    type Foo3Sym1 (t :: a) = Foo3 t
    instance SuppressUnusedWarnings Foo3Sym0 where
      suppressUnusedWarnings _
        = snd (GHC.Tuple.(,) Foo3Sym0KindInference GHC.Tuple.())
    data Foo3Sym0 (l :: TyFun a (Foo3 a))
      = forall arg. (GHC.Types.~) (Data.Singletons.KindOf (Apply Foo3Sym0 arg)) (Data.Singletons.KindOf (Foo3Sym1 arg)) =>
        Foo3Sym0KindInference
    type instance Apply Foo3Sym0 l = Foo3Sym1 l
    instance PBounded (KProxy :: KProxy (Foo4 k k)) where
      type MinBound = Foo41
      type MaxBound = Foo42
    type Foo41Sym0 = Foo41
    type Foo42Sym0 = Foo42
    instance PBounded (KProxy :: KProxy Pair) where
      type MinBound = Pair MinBound MinBound
      type MaxBound = Pair MaxBound MaxBound
    type PairSym2 (t :: Bool) (t :: Bool) = Pair t t
    instance SuppressUnusedWarnings PairSym1 where
      suppressUnusedWarnings _
        = snd (GHC.Tuple.(,) PairSym1KindInference GHC.Tuple.())
    data PairSym1 (l :: Bool) (l :: TyFun Bool Pair)
      = forall arg. (GHC.Types.~) (Data.Singletons.KindOf (Apply (PairSym1 l) arg)) (Data.Singletons.KindOf (PairSym2 l arg)) =>
        PairSym1KindInference
    type instance Apply (PairSym1 l) l = PairSym2 l l
    instance SuppressUnusedWarnings PairSym0 where
      suppressUnusedWarnings _
        = snd (GHC.Tuple.(,) PairSym0KindInference GHC.Tuple.())
    data PairSym0 (l :: TyFun Bool (TyFun Bool Pair -> *))
      = forall arg. (GHC.Types.~) (Data.Singletons.KindOf (Apply PairSym0 arg)) (Data.Singletons.KindOf (PairSym1 arg)) =>
        PairSym0KindInference
    type instance Apply PairSym0 l = PairSym1 l