singletons-2.3: tests/compile-and-dump/Singletons/T54.ghc82.template
Singletons/T54.hs:(0,0)-(0,0): Splicing declarations
singletons
[d| g :: Bool -> Bool
g e = (case [not] of { [_] -> not }) e |]
======>
g :: Bool -> Bool
g e = (case [not] of { [_] -> not }) e
type Let0123456789876543210Scrutinee_0123456789876543210Sym1 t =
Let0123456789876543210Scrutinee_0123456789876543210 t
instance SuppressUnusedWarnings Let0123456789876543210Scrutinee_0123456789876543210Sym0 where
suppressUnusedWarnings _
= snd
((GHC.Tuple.(,)
Let0123456789876543210Scrutinee_0123456789876543210Sym0KindInference)
GHC.Tuple.())
data Let0123456789876543210Scrutinee_0123456789876543210Sym0 l
= forall arg. SameKind (Apply Let0123456789876543210Scrutinee_0123456789876543210Sym0 arg) (Let0123456789876543210Scrutinee_0123456789876543210Sym1 arg) =>
Let0123456789876543210Scrutinee_0123456789876543210Sym0KindInference
type instance Apply Let0123456789876543210Scrutinee_0123456789876543210Sym0 l = Let0123456789876543210Scrutinee_0123456789876543210 l
type family Let0123456789876543210Scrutinee_0123456789876543210 e where
Let0123456789876543210Scrutinee_0123456789876543210 e = Apply (Apply (:$) NotSym0) '[]
type family Case_0123456789876543210 e t where
Case_0123456789876543210 e '[_z_0123456789876543210] = NotSym0
type GSym1 (t :: Bool) = G t
instance SuppressUnusedWarnings GSym0 where
suppressUnusedWarnings _
= snd ((GHC.Tuple.(,) GSym0KindInference) GHC.Tuple.())
data GSym0 (l :: TyFun Bool Bool)
= forall arg. SameKind (Apply GSym0 arg) (GSym1 arg) =>
GSym0KindInference
type instance Apply GSym0 l = G l
type family G (a :: Bool) :: Bool where
G e = Apply (Case_0123456789876543210 e (Let0123456789876543210Scrutinee_0123456789876543210Sym1 e)) e
sG :: forall (t :: Bool). Sing t -> Sing (Apply GSym0 t :: Bool)
sG (sE :: Sing e)
= (applySing
(let
sScrutinee_0123456789876543210 ::
Sing (Let0123456789876543210Scrutinee_0123456789876543210Sym1 e)
sScrutinee_0123456789876543210
= (applySing
((applySing ((singFun2 @(:$)) SCons)) ((singFun1 @NotSym0) sNot)))
SNil
in case sScrutinee_0123456789876543210 of {
SCons _ SNil -> (singFun1 @NotSym0) sNot } ::
Sing (Case_0123456789876543210 e (Let0123456789876543210Scrutinee_0123456789876543210Sym1 e))))
sE