pprTyThingHdr exts (AClass cls) = pprClassHdr exts cls
pprTyConHdr exts tyCon =
- ptext keyword <+> ppr_bndr tyCon <+> hsep (map ppr vars)
+ addFamily (ptext keyword) <+> ppr_bndr tyCon <+> hsep (map ppr vars)
where
vars | GHC.isPrimTyCon tyCon ||
GHC.isFunTyCon tyCon = take (GHC.tyConArity tyCon) GHC.alphaTyVars
| GHC.isNewTyCon tyCon = SLIT("newtype")
| otherwise = SLIT("data")
+ addFamily keytext
+ | GHC.isOpenTyCon tyCon = keytext <> ptext SLIT(" family")
+ | otherwise = keytext
+
pprDataConSig exts dataCon =
ppr_bndr dataCon <+> dcolon <+> pprType exts (GHC.dataConType dataCon)
pprTyCon exts tyCon
| GHC.isSynTyCon tyCon
- = let rhs_type = GHC.synTyConRhs tyCon
- in hang (pprTyConHdr exts tyCon <+> equals) 2 (pprType exts rhs_type)
+ = if GHC.isOpenTyCon tyCon
+ then pprTyConHdr exts tyCon <+> dcolon <+>
+ pprType exts (GHC.synTyConResKind tyCon)
+ else
+ let rhs_type = GHC.synTyConType tyCon
+ in hang (pprTyConHdr exts tyCon <+> equals) 2 (pprType exts rhs_type)
| otherwise
= pprAlgTyCon exts tyCon (const True) (const True)
where tyCon = GHC.dataConTyCon dataCon
pprDataConDecl exts gadt_style show_label dataCon
- = error "kevind stub"
-{-
| not gadt_style = ppr_fields tys_w_strs
| otherwise = ppr_bndr dataCon <+> dcolon <+>
sep [ ppr_tvs, GHC.pprThetaArrow theta, pp_tau ]
where
- (tyvars, theta, argTypes, tyCon) = GHC.dataConSig dataCon
+ (tyvars, theta, argTypes) = GHC.dataConSig dataCon
+ tyCon = GHC.dataConTyCon dataCon
labels = GHC.dataConFieldLabels dataCon
res_tys = dataConResTys dataCon
qualVars = filter (flip notElem (GHC.tyConTyVars tyCon)) tyvars
-- printing out the dataCon as a type signature, in GADT style
pp_tau = foldr add pp_res_ty tys_w_strs
- pp_res_ty = ppr_bndr tyCon <+> hsep (map GHC.pprParendType res_tys)
+ pp_res_ty = GHC.pprTypeApp (ppr_bndr tyCon) res_tys
add (str,ty) pp_ty = pprBangTy str ty <+> arrow <+> pp_ty
pprParendBangTy (strict,ty)
= ppr_bndr dataCon <+>
braces (sep (punctuate comma (ppr_trim maybe_show_label
(zip labels fields))))
--}
+
pprClass exts cls
| null methods =
pprClassHdr exts cls