From: simonpj@microsoft.com Date: Tue, 15 Jun 2010 07:04:09 +0000 (+0000) Subject: Comments, and improvement to pretty-printing of HsGroup X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=commitdiff_plain;h=617a845f9574185f71db0cad7cfcb2e54fcb9db4 Comments, and improvement to pretty-printing of HsGroup --- 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