Promote/Newtypes.hs:(0,0)-(0,0): Splicing declarations promote [d| newtype Foo = Foo Nat deriving Eq newtype Bar = Bar {unBar :: Nat} |] ======> newtype Foo = Foo Nat deriving Eq newtype Bar = Bar {unBar :: Nat} type FooSym0 :: (~>) Nat Foo data FooSym0 a0123456789876543210 where FooSym0KindInference :: SameKind (Apply FooSym0 arg) (FooSym1 arg) => FooSym0 a0123456789876543210 type instance Apply FooSym0 a0123456789876543210 = FooSym1 a0123456789876543210 instance SuppressUnusedWarnings FooSym0 where suppressUnusedWarnings = snd (((,) FooSym0KindInference) ()) type FooSym1 (a0123456789876543210 :: Nat) = Foo a0123456789876543210 :: Foo type BarSym0 :: (~>) Nat Bar data BarSym0 a0123456789876543210 where BarSym0KindInference :: SameKind (Apply BarSym0 arg) (BarSym1 arg) => BarSym0 a0123456789876543210 type instance Apply BarSym0 a0123456789876543210 = BarSym1 a0123456789876543210 instance SuppressUnusedWarnings BarSym0 where suppressUnusedWarnings = snd (((,) BarSym0KindInference) ()) type BarSym1 (a0123456789876543210 :: Nat) = Bar a0123456789876543210 :: Bar type UnBarSym0 :: (~>) Bar Nat data UnBarSym0 a0123456789876543210 where UnBarSym0KindInference :: SameKind (Apply UnBarSym0 arg) (UnBarSym1 arg) => UnBarSym0 a0123456789876543210 type instance Apply UnBarSym0 a0123456789876543210 = UnBarSym1 a0123456789876543210 instance SuppressUnusedWarnings UnBarSym0 where suppressUnusedWarnings = snd (((,) UnBarSym0KindInference) ()) type UnBarSym1 (a0123456789876543210 :: Bar) = UnBar a0123456789876543210 :: Nat type UnBar :: Bar -> Nat type family UnBar a where UnBar (Bar field) = field type Equals_0123456789876543210 :: Foo -> Foo -> Bool type family Equals_0123456789876543210 a b where Equals_0123456789876543210 (Foo a) (Foo b) = (==) a b Equals_0123456789876543210 (_ :: Foo) (_ :: Foo) = FalseSym0 instance PEq Foo where type (==) a b = Equals_0123456789876543210 a b