pprTypedCoreBinder
-- these are here to make the instances go in 0.26:
-#if __GLASGOW_HASKELL__ <= 26
+#if __GLASGOW_HASKELL__ <= 30
, GenCoreBinding, GenCoreExpr, GenCoreCaseAlts
, GenCoreCaseDefault, GenCoreArg
#endif
import CoreSyn
import CostCentre ( showCostCentre )
-import Id ( idType, getIdInfo, getIdStrictness,
+import Id ( idType, getIdInfo, getIdStrictness, isTupleCon,
nullIdEnv, DataCon(..), GenId{-instances-}
)
import IdInfo ( ppIdInfo, StrictnessInfo(..) )
import Literal ( Literal{-instances-} )
+import Name ( isSymLexeme )
import Outputable -- quite a few things
import PprEnv
import PprType ( GenType{-instances-}, GenTyVar{-instance-} )
ppr_expr pe (SCC cc expr)
= ppSep [ppCat [ppPStr SLIT("_scc_"), pSCC pe cc],
ppr_parend_expr pe expr ]
+
+ppr_expr pe (Coerce c ty expr)
+ = ppSep [ppCat [ppPStr SLIT("_coerce_"), pp_coerce c],
+ pTy pe ty, ppr_parend_expr pe expr ]
+ where
+ pp_coerce (CoerceIn v) = ppBeside (ppStr "{-in-}") (ppr (pStyle pe) v)
+ pp_coerce (CoerceOut v) = ppBeside (ppStr "{-out-}") (ppr (pStyle pe) v)
\end{code}
\begin{code}
= ppAboves [ ppAboves (map ppr_alt alts), ppr_default pe deflt ]
where
ppr_alt (con, params, expr)
- = ppHang (ppCat [ppr_con con (pCon pe con),
- ppInterleave ppSP (map (pMinBndr pe) params),
- ppStr "->"])
+ = ppHang (if isTupleCon con then
+ ppCat [ppParens (ppInterleave ppComma (map (pMinBndr pe) params)),
+ ppStr "->"]
+ else
+ ppCat [ppr_con con (pCon pe con),
+ ppInterleave ppSP (map (pMinBndr pe) params),
+ ppStr "->"]
+ )
4 (ppr_expr pe expr)
where
ppr_con con pp_con
- = if isOpLexeme con then ppParens pp_con else pp_con
+ = if isSymLexeme con then ppParens pp_con else pp_con
ppr_alts pe (PrimAlts alts deflt)
= ppAboves [ ppAboves (map ppr_alt alts), ppr_default pe deflt ]