%
+% (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 ( coercionKindPredTy )
-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
+import Module
\end{code}
%************************************************************************
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
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}