From 617a845f9574185f71db0cad7cfcb2e54fcb9db4 Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Tue, 15 Jun 2010 07:04:09 +0000 Subject: [PATCH] Comments, and improvement to pretty-printing of HsGroup --- compiler/hsSyn/HsBinds.lhs | 4 ++-- compiler/hsSyn/HsDecls.lhs | 27 ++++++++++++++++++--------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/compiler/hsSyn/HsBinds.lhs b/compiler/hsSyn/HsBinds.lhs index c4d38fd..5709e58 100644 --- a/compiler/hsSyn/HsBinds.lhs +++ b/compiler/hsSyn/HsBinds.lhs @@ -66,11 +66,11 @@ data HsLocalBindsLR idL idR -- Bindings in a 'let' expression type HsValBinds id = HsValBindsLR id id data HsValBindsLR idL idR -- Value bindings (not implicit parameters) - = ValBindsIn -- Before typechecking + = ValBindsIn -- Before renaming (LHsBindsLR idL idR) [LSig idR] -- Not dependency analysed -- Recursive by default - | ValBindsOut -- After renaming + | ValBindsOut -- After renaming [(RecFlag, LHsBinds idL)] -- Dependency analysed, later bindings -- in the list may depend on earlier -- ones. diff --git a/compiler/hsSyn/HsDecls.lhs b/compiler/hsSyn/HsDecls.lhs index dc4bac7..dff8ce7 100644 --- a/compiler/hsSyn/HsDecls.lhs +++ b/compiler/hsSyn/HsDecls.lhs @@ -221,16 +221,25 @@ instance OutputableBndr name => Outputable (HsGroup name) where hs_fords = foreign_decls, hs_defds = default_decls, hs_ruleds = rule_decls }) - = vcat [ppr_ds fix_decls, ppr_ds default_decls, - ppr_ds deprec_decls, ppr_ds ann_decls, - ppr_ds rule_decls, - ppr val_decls, - ppr_ds tycl_decls, ppr_ds inst_decls, - ppr_ds deriv_decls, - ppr_ds foreign_decls] + = vcat_mb empty + [ppr_ds fix_decls, ppr_ds default_decls, + ppr_ds deprec_decls, ppr_ds ann_decls, + ppr_ds rule_decls, + if isEmptyValBinds val_decls + then Nothing + else Just (ppr val_decls), + ppr_ds tycl_decls, ppr_ds inst_decls, + ppr_ds deriv_decls, + ppr_ds foreign_decls] where - ppr_ds [] = empty - ppr_ds ds = blankLine $$ vcat (map ppr ds) + ppr_ds [] = Nothing + ppr_ds ds = Just (vcat (map ppr ds)) + + vcat_mb :: SDoc -> [Maybe SDoc] -> SDoc + -- Concatenate vertically with white-space between non-blanks + vcat_mb _ [] = empty + vcat_mb gap (Nothing : ds) = vcat_mb gap ds + vcat_mb gap (Just d : ds) = gap $$ d $$ vcat_mb blankLine ds data SpliceDecl id = SpliceDecl -- Top level splice -- 1.7.10.4