Promote/T180.hs:(0,0)-(0,0): Splicing declarations promote [d| z (X1 x) = x z (X2 x) = x data X = X1 {y :: Symbol} | X2 {y :: Symbol} |] ======> data X = X1 {y :: Symbol} | X2 {y :: Symbol} z (X1 x) = x z (X2 x) = x type X1Sym0 :: (~>) Symbol X data X1Sym0 :: (~>) Symbol X where X1Sym0KindInference :: SameKind (Apply X1Sym0 arg) (X1Sym1 arg) => X1Sym0 a0123456789876543210 type instance Apply X1Sym0 a0123456789876543210 = X1 a0123456789876543210 instance SuppressUnusedWarnings X1Sym0 where suppressUnusedWarnings = snd ((,) X1Sym0KindInference ()) type X1Sym1 :: Symbol -> X type family X1Sym1 (a0123456789876543210 :: Symbol) :: X where X1Sym1 a0123456789876543210 = X1 a0123456789876543210 type X2Sym0 :: (~>) Symbol X data X2Sym0 :: (~>) Symbol X where X2Sym0KindInference :: SameKind (Apply X2Sym0 arg) (X2Sym1 arg) => X2Sym0 a0123456789876543210 type instance Apply X2Sym0 a0123456789876543210 = X2 a0123456789876543210 instance SuppressUnusedWarnings X2Sym0 where suppressUnusedWarnings = snd ((,) X2Sym0KindInference ()) type X2Sym1 :: Symbol -> X type family X2Sym1 (a0123456789876543210 :: Symbol) :: X where X2Sym1 a0123456789876543210 = X2 a0123456789876543210 data ZSym0 a0123456789876543210 where ZSym0KindInference :: SameKind (Apply ZSym0 arg) (ZSym1 arg) => ZSym0 a0123456789876543210 type instance Apply ZSym0 a0123456789876543210 = Z a0123456789876543210 instance SuppressUnusedWarnings ZSym0 where suppressUnusedWarnings = snd ((,) ZSym0KindInference ()) type family ZSym1 a0123456789876543210 where ZSym1 a0123456789876543210 = Z a0123456789876543210 type YSym0 :: (~>) X Symbol data YSym0 :: (~>) X Symbol where YSym0KindInference :: SameKind (Apply YSym0 arg) (YSym1 arg) => YSym0 a0123456789876543210 type instance Apply YSym0 a0123456789876543210 = Y a0123456789876543210 instance SuppressUnusedWarnings YSym0 where suppressUnusedWarnings = snd ((,) YSym0KindInference ()) type YSym1 :: X -> Symbol type family YSym1 (a0123456789876543210 :: X) :: Symbol where YSym1 a0123456789876543210 = Y a0123456789876543210 type family Z a where Z (X1 x) = x Z (X2 x) = x type Y :: X -> Symbol type family Y (a :: X) :: Symbol where Y (X1 field) = field Y (X2 field) = field