-- others:
import Id ( DictVar(..), GenId, Id(..) )
-import Name ( isOpLexeme, pprOp )
+import Name ( pprNonSym, pprSym )
import Outputable ( interppSP, interpp'SP, ifnotPprForUser )
import PprType ( pprGenType, pprParendGenType, GenType{-instance-} )
import Pretty
(HsExpr tyvar uvar id pat) -- right operand
-- We preserve prefix negation and parenthesis for the precedence parser.
+ -- They are eventually removed by the type checker.
| NegApp (HsExpr tyvar uvar id pat) -- negated expr
+ (HsExpr tyvar uvar id pat) -- the negate id (in a HsVar)
+
| HsPar (HsExpr tyvar uvar id pat) -- parenthesised expr
| SectionL (HsExpr tyvar uvar id pat) -- operand
\end{code}
\begin{code}
-pprExpr sty (HsVar v)
- = (if (isOpLexeme v) then ppParens else id) (ppr sty v)
+pprExpr sty (HsVar v) = pprNonSym sty v
pprExpr sty (HsLit lit) = ppr sty lit
pprExpr sty (HsLitOut lit _) = ppr sty lit
pprExpr sty expr@(HsApp e1 e2)
= let (fun, args) = collect_args expr [] in
- ppHang (pprParendExpr sty fun) 4 (ppSep (map (pprParendExpr sty) args))
+ ppHang (pprExpr sty fun) 4 (ppSep (map (pprExpr sty) args))
where
collect_args (HsApp fun arg) args = collect_args fun (arg:args)
collect_args fun args = (fun, args)
HsVar v -> pp_infixly v
_ -> pp_prefixly
where
- pp_e1 = pprParendExpr sty e1
- pp_e2 = pprParendExpr sty e2
+ pp_e1 = pprExpr sty e1
+ pp_e2 = pprExpr sty e2
pp_prefixly
- = ppHang (pprParendExpr sty op) 4 (ppSep [pp_e1, pp_e2])
+ = ppHang (pprExpr sty op) 4 (ppSep [pp_e1, pp_e2])
pp_infixly v
- = ppSep [pp_e1, ppCat [pprOp sty v, pp_e2]]
+ = ppSep [pp_e1, ppCat [pprSym sty v, pp_e2]]
-pprExpr sty (NegApp e)
+pprExpr sty (NegApp e _)
= ppBeside (ppChar '-') (pprParendExpr sty e)
pprExpr sty (HsPar e)
4 (ppCat [pp_expr, ppStr "_x )"])
pp_infixly v
= ppSep [ ppBeside ppLparen pp_expr,
- ppBeside (pprOp sty v) ppRparen ]
+ ppBeside (pprSym sty v) ppRparen ]
pprExpr sty (SectionR op expr)
= case op of
pp_prefixly = ppHang (ppCat [ppStr "( \\ _x ->", ppr sty op, ppPStr SLIT("_x")])
4 (ppBeside pp_expr ppRparen)
pp_infixly v
- = ppSep [ ppBeside ppLparen (pprOp sty v),
+ = ppSep [ ppBeside ppLparen (pprSym sty v),
ppBeside pp_expr ppRparen ]
pprExpr sty (HsCase expr matches _)
= ppHang thing 4
(ppBesides [ppChar '{', ppInterleave ppComma (map (pp_rbind sty) rbinds), ppChar '}'])
where
- pp_rbind sty (v, _, True{-pun-}) = ppr sty v
- pp_rbind sty (v, e, _) = ppCat [ppr sty v, ppStr "<-", ppr sty e]
+ pp_rbind PprForUser (v, _, True) = ppr PprForUser v
+ pp_rbind sty (v, e, _) = ppCat [ppr sty v, ppStr "=", ppr sty e]
\end{code}
%************************************************************************