Printing of Core syntax
\begin{code}
+{-# OPTIONS -w #-}
+-- The above warning supression flag is a temporary kludge.
+-- While working on this module you are encouraged to remove it and fix
+-- any warnings in the module. See
+-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings
+-- for details
+
module PprCore (
pprCoreExpr, pprParendExpr,
pprCoreBinding, pprCoreBindings, pprCoreAlt,
import Util
import Outputable
import FastString
-import Module
\end{code}
%************************************************************************
nest 2 (pprCoreExpr rhs),
ptext SLIT("} in"),
pprCoreExpr body ]
--}
ppr_expr add_par (Let bind@(NonRec val_bdr rhs) expr@(Let _ _))
= add_par
ptext SLIT("} in")])
$$
pprCoreExpr expr)
+-}
--- general case (recursive case, too)
+-- General case (recursive case, too)
ppr_expr add_par (Let bind expr)
= add_par $
- sep [hang (ptext keyword) 2 (ppr_bind bind),
- hang (ptext SLIT("} in ")) 2 (pprCoreExpr expr)]
+ sep [hang (ptext keyword) 2 (ppr_bind bind <+> ptext SLIT("} in")),
+ pprCoreExpr expr]
where
keyword = case bind of
- Rec _ -> SLIT("__letrec {")
+ Rec _ -> SLIT("letrec {")
NonRec _ _ -> SLIT("let {")
ppr_expr add_par (Note (SCC cc) expr)
pprIdBndr id = ppr id <+> pprIdBndrInfo (idInfo id)
pprIdBndrInfo info
- = megaSeqIdInfo `seq` doc -- The seq is useful for poking on black holes
+ = megaSeqIdInfo info `seq` doc -- The seq is useful for poking on black holes
where
prag_info = inlinePragInfo info
occ_info = occInfo info
ru_bndrs = tpl_vars, ru_args = tpl_args,
ru_rhs = rhs })
= hang (doubleQuotes (ftext name) <+> ppr act)
- 4 (sep [ptext SLIT("__forall") <+> braces (sep (map pprTypedBinder tpl_vars)),
+ 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)
])