[project @ 1996-05-01 18:36:59 by partain]
[ghc-hetmet.git] / ghc / compiler / hsSyn / HsExpr.lhs
index 3b4face..5ad5ee5 100644 (file)
@@ -19,7 +19,7 @@ import HsTypes                ( PolyType )
 
 -- 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
@@ -57,8 +57,11 @@ data HsExpr tyvar uvar id pat
                (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
+               id                              -- the negate id
+
   | HsPar      (HsExpr tyvar uvar id pat)      -- parenthesised expr
 
   | SectionL   (HsExpr tyvar uvar id pat)      -- operand
@@ -194,8 +197,7 @@ instance (NamedThing id, Outputable id, Outputable pat,
 \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
@@ -222,9 +224,9 @@ pprExpr sty (OpApp e1 op e2)
       = ppHang (pprParendExpr 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)
@@ -241,7 +243,7 @@ pprExpr sty (SectionL expr op)
                       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
@@ -253,7 +255,7 @@ pprExpr sty (SectionR op expr)
     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 _)
@@ -401,8 +403,8 @@ pp_rbinds sty thing rbinds
   = 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}
 
 %************************************************************************