diff options
Diffstat (limited to 'libraries/template-haskell/Language/Haskell/TH/Ppr.hs')
-rw-r--r-- | libraries/template-haskell/Language/Haskell/TH/Ppr.hs | 29 |
1 files changed, 9 insertions, 20 deletions
diff --git a/libraries/template-haskell/Language/Haskell/TH/Ppr.hs b/libraries/template-haskell/Language/Haskell/TH/Ppr.hs index 7a6fbb0db9..449a6e5087 100644 --- a/libraries/template-haskell/Language/Haskell/TH/Ppr.hs +++ b/libraries/template-haskell/Language/Haskell/TH/Ppr.hs @@ -478,8 +478,15 @@ ppr_overlap o = text $ ppr_data :: Doc -> Cxt -> Maybe Name -> Doc -> Maybe Kind -> [Con] -> [DerivClause] -> Doc -ppr_data maybeInst ctxt t argsDoc ksig cs decs - = sep [text "data" <+> maybeInst +ppr_data = ppr_typedef "data" + +ppr_newtype :: Doc -> Cxt -> Maybe Name -> Doc -> Maybe Kind -> Con -> [DerivClause] + -> Doc +ppr_newtype maybeInst ctxt t argsDoc ksig c decs = ppr_typedef "newtype" maybeInst ctxt t argsDoc ksig [c] decs + +ppr_typedef :: String -> Doc -> Cxt -> Maybe Name -> Doc -> Maybe Kind -> [Con] -> [DerivClause] -> Doc +ppr_typedef data_or_newtype maybeInst ctxt t argsDoc ksig cs decs + = sep [text data_or_newtype <+> maybeInst <+> pprCxt ctxt <+> case t of Just n -> pprName' Applied n <+> argsDoc @@ -511,24 +518,6 @@ ppr_data maybeInst ctxt t argsDoc ksig cs decs Nothing -> empty Just k -> dcolon <+> ppr k -ppr_newtype :: Doc -> Cxt -> Maybe Name -> Doc -> Maybe Kind -> Con -> [DerivClause] - -> Doc -ppr_newtype maybeInst ctxt t argsDoc ksig c decs - = sep [text "newtype" <+> maybeInst - <+> pprCxt ctxt - <+> case t of - Just n -> ppr n <+> argsDoc - Nothing -> argsDoc - <+> ksigDoc, - nest 2 (char '=' <+> ppr c), - if null decs - then empty - else nest nestDepth - $ vcat $ map ppr_deriv_clause decs] - where - ksigDoc = case ksig of - Nothing -> empty - Just k -> dcolon <+> ppr k ppr_deriv_clause :: DerivClause -> Doc ppr_deriv_clause (DerivClause ds ctxt) |