%
+% (c) The University of Glasgow 2006
% (c) The AQUA Project, Glasgow University, 1996-1998
%
-%************************************************************************
-%* *
-\section[PprCore]{Printing of Core syntax, including for interfaces}
-%* *
-%************************************************************************
+
+Printing of Core syntax
\begin{code}
module PprCore (
#include "HsVersions.h"
import CoreSyn
-import CostCentre ( pprCostCentreCore )
-import Var ( Var )
-import Id ( Id, idType, isDataConWorkId_maybe, idArity,
- idInfo, globalIdDetails, isGlobalId, isExportedId
- )
-import Var ( TyVar, isTyVar, tyVarKind )
-import IdInfo ( IdInfo, megaSeqIdInfo,
- inlinePragInfo, occInfo, newDemandInfo,
- lbvarInfo, hasNoLBVarInfo,
- arityInfo, ppArityInfo,
- specInfo, pprNewStrictness,
- workerInfo, ppWorkerInfo,
- newStrictnessInfo, cafInfo, ppCafInfo, specInfoRules
- )
-import NewDemand ( isTop )
+import CostCentre
+import Var
+import Id
+import IdInfo
+import NewDemand
#ifdef OLD_STRICTNESS
-import Id ( idDemandInfo )
-import IdInfo ( cprInfo, ppCprInfo, strictnessInfo, ppStrictnessInfo )
+import Id
+import IdInfo
#endif
-import DataCon ( dataConTyCon )
-import TyCon ( tupleTyConBoxity, isTupleTyCon )
-import Type ( pprParendType, pprType, pprParendKind )
-import Coercion ( coercionKindTyConApp )
-import BasicTypes ( tupleParens, isNoOcc, isAlwaysActive )
-import Util ( lengthIs )
+import DataCon
+import TyCon
+import Type
+import Coercion
+import BasicTypes
+import Util
import Outputable
-import FastString ( mkFastString )
+import FastString
\end{code}
%************************************************************************
sep [pprParendExpr expr,
ptext SLIT("`cast`") <+> parens (pprCo co)]
where
- pprCo co = sep [ppr co, dcolon <+> ppr (coercionKindTyConApp co)]
+ pprCo co = sep [ppr co, dcolon <+> ppr (coercionKindPredTy co)]
ppr_expr add_par expr@(Lam _ _)
let
pp_args = sep (map pprArg args)
val_args = dropWhile isTypeArg args -- Drop the type arguments for tuples
- pp_tup_args = sep (punctuate comma (map pprArg val_args))
+ pp_tup_args = sep (punctuate comma (map pprCoreExpr val_args))
in
case fun of
Var f -> case isDataConWorkId_maybe f of
= add_par $
sep [sep [ptext SLIT("case") <+> pprCoreExpr expr,
ifPprDebug (braces (ppr ty)),
- hsep [ptext SLIT("of"),
- ppr_bndr var,
- char '{',
- ppr_case_pat con args
- ]],
+ sep [ptext SLIT("of") <+> ppr_bndr var,
+ char '{' <+> ppr_case_pat con args]
+ ],
pprCoreExpr rhs,
char '}'
]
tc = dataConTyCon dc
ppr_case_pat con args
- = ppr con <+> hsep (map ppr_bndr args) <+> arrow
+ = ppr con <+> sep (map ppr_bndr args) <+> arrow
where
ppr_bndr = pprBndr CaseBind
pprRule (Rule { ru_name = name, ru_act = act, ru_fn = fn,
ru_bndrs = tpl_vars, ru_args = tpl_args,
ru_rhs = rhs })
- = doubleQuotes (ftext name) <+> ppr act <+>
- sep [
- ptext SLIT("__forall") <+> braces (sep (map pprTypedBinder tpl_vars)),
- nest 2 (ppr fn <+> sep (map pprArg tpl_args)),
- nest 2 (ptext SLIT("=") <+> pprCoreExpr rhs)
- ] <+> semi
+ = hang (doubleQuotes (ftext name) <+> ppr act)
+ 4 (sep [ptext SLIT("forall") <+> braces (sep (map pprTypedBinder tpl_vars)),
+ nest 2 (ppr fn <+> sep (map pprArg tpl_args)),
+ nest 2 (ptext SLIT("=") <+> pprCoreExpr rhs)
+ ])
\end{code}