singletons-2.5: tests/compile-and-dump/Promote/Constructors.ghc86.template
Promote/Constructors.hs:(0,0)-(0,0): Splicing declarations
promote
[d| data Foo = Foo | Foo :+ Foo
data Bar = Bar Bar Bar Bar Bar Foo |]
======>
data Foo = Foo | Foo :+ Foo
data Bar = Bar Bar Bar Bar Bar Foo
type FooSym0 = Foo
type (:+@#@$$$) (t0123456789876543210 :: Foo) (t0123456789876543210 :: Foo) =
(:+) t0123456789876543210 t0123456789876543210
instance SuppressUnusedWarnings ((:+@#@$$) t0123456789876543210) where
suppressUnusedWarnings = snd (((,) (::+@#@$$###)) ())
data (:+@#@$$) (t0123456789876543210 :: Foo) :: (~>) Foo Foo
where
(::+@#@$$###) :: forall t0123456789876543210
t0123456789876543210
arg. SameKind (Apply ((:+@#@$$) t0123456789876543210) arg) ((:+@#@$$$) t0123456789876543210 arg) =>
(:+@#@$$) t0123456789876543210 t0123456789876543210
type instance Apply ((:+@#@$$) t0123456789876543210) t0123456789876543210 = (:+) t0123456789876543210 t0123456789876543210
instance SuppressUnusedWarnings (:+@#@$) where
suppressUnusedWarnings = snd (((,) (::+@#@$###)) ())
data (:+@#@$) :: (~>) Foo ((~>) Foo Foo)
where
(::+@#@$###) :: forall t0123456789876543210
arg. SameKind (Apply (:+@#@$) arg) ((:+@#@$$) arg) =>
(:+@#@$) t0123456789876543210
type instance Apply (:+@#@$) t0123456789876543210 = (:+@#@$$) t0123456789876543210
type BarSym5 (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) (t0123456789876543210 :: Foo) =
Bar t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210
instance SuppressUnusedWarnings (BarSym4 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210) where
suppressUnusedWarnings = snd (((,) BarSym4KindInference) ())
data BarSym4 (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) :: (~>) Foo Bar
where
BarSym4KindInference :: forall t0123456789876543210
t0123456789876543210
t0123456789876543210
t0123456789876543210
t0123456789876543210
arg. SameKind (Apply (BarSym4 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210) arg) (BarSym5 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210 arg) =>
BarSym4 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210
type instance Apply (BarSym4 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210) t0123456789876543210 = Bar t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210
instance SuppressUnusedWarnings (BarSym3 t0123456789876543210 t0123456789876543210 t0123456789876543210) where
suppressUnusedWarnings = snd (((,) BarSym3KindInference) ())
data BarSym3 (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) :: (~>) Bar ((~>) Foo Bar)
where
BarSym3KindInference :: forall t0123456789876543210
t0123456789876543210
t0123456789876543210
t0123456789876543210
arg. SameKind (Apply (BarSym3 t0123456789876543210 t0123456789876543210 t0123456789876543210) arg) (BarSym4 t0123456789876543210 t0123456789876543210 t0123456789876543210 arg) =>
BarSym3 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210
type instance Apply (BarSym3 t0123456789876543210 t0123456789876543210 t0123456789876543210) t0123456789876543210 = BarSym4 t0123456789876543210 t0123456789876543210 t0123456789876543210 t0123456789876543210
instance SuppressUnusedWarnings (BarSym2 t0123456789876543210 t0123456789876543210) where
suppressUnusedWarnings = snd (((,) BarSym2KindInference) ())
data BarSym2 (t0123456789876543210 :: Bar) (t0123456789876543210 :: Bar) :: (~>) Bar ((~>) Bar ((~>) Foo Bar))
where
BarSym2KindInference :: forall t0123456789876543210
t0123456789876543210
t0123456789876543210
arg. SameKind (Apply (BarSym2 t0123456789876543210 t0123456789876543210) arg) (BarSym3 t0123456789876543210 t0123456789876543210 arg) =>
BarSym2 t0123456789876543210 t0123456789876543210 t0123456789876543210
type instance Apply (BarSym2 t0123456789876543210 t0123456789876543210) t0123456789876543210 = BarSym3 t0123456789876543210 t0123456789876543210 t0123456789876543210
instance SuppressUnusedWarnings (BarSym1 t0123456789876543210) where
suppressUnusedWarnings = snd (((,) BarSym1KindInference) ())
data BarSym1 (t0123456789876543210 :: Bar) :: (~>) Bar ((~>) Bar ((~>) Bar ((~>) Foo Bar)))
where
BarSym1KindInference :: forall t0123456789876543210
t0123456789876543210
arg. SameKind (Apply (BarSym1 t0123456789876543210) arg) (BarSym2 t0123456789876543210 arg) =>
BarSym1 t0123456789876543210 t0123456789876543210
type instance Apply (BarSym1 t0123456789876543210) t0123456789876543210 = BarSym2 t0123456789876543210 t0123456789876543210
instance SuppressUnusedWarnings BarSym0 where
suppressUnusedWarnings = snd (((,) BarSym0KindInference) ())
data BarSym0 :: (~>) Bar ((~>) Bar ((~>) Bar ((~>) Bar ((~>) Foo Bar))))
where
BarSym0KindInference :: forall t0123456789876543210
arg. SameKind (Apply BarSym0 arg) (BarSym1 arg) =>
BarSym0 t0123456789876543210
type instance Apply BarSym0 t0123456789876543210 = BarSym1 t0123456789876543210