X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2FhsSyn%2FHsExpr.lhs;h=2360337759a44c1b9a7cd2bedf0f9a01f17e2d4e;hb=366e8db02ab7a5bb5316699bff397d06e47891b2;hp=25ecbb11382e166ba5f6ab7dfa59b82a179df8f6;hpb=44ba24dc84d271ca9bd5ab5060cb63ed87f585e3;p=ghc-hetmet.git diff --git a/compiler/hsSyn/HsExpr.lhs b/compiler/hsSyn/HsExpr.lhs index 25ecbb1..2360337 100644 --- a/compiler/hsSyn/HsExpr.lhs +++ b/compiler/hsSyn/HsExpr.lhs @@ -1,7 +1,9 @@ % +% (c) The University of Glasgow 2006 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998 % -\section[HsExpr]{Abstract Haskell syntax: expressions} + +HsExpr: Abstract Haskell syntax: expressions \begin{code} module HsExpr where @@ -9,19 +11,18 @@ module HsExpr where #include "HsVersions.h" -- friends: -import HsDecls ( HsGroup ) -import HsPat ( LPat ) -import HsLit ( HsLit(..), HsOverLit ) -import HsTypes ( LHsType, PostTcType ) -import HsImpExp ( isOperator, pprHsVar ) -import HsBinds ( HsLocalBinds, DictBinds, ExprCoFn, isEmptyLocalBinds ) +import HsDecls +import HsPat +import HsLit +import HsTypes +import HsImpExp +import HsBinds -- others: -import Type ( Type, pprParendType ) -import Var ( TyVar, Id ) -import Name ( Name ) -import BasicTypes ( IPName, Boxity, tupleParens, Arity, Fixity(..) ) -import SrcLoc ( Located(..), unLoc ) +import Var +import Name +import BasicTypes +import SrcLoc import Outputable import FastString \end{code} @@ -239,7 +240,7 @@ The renamer translates them into the Right Thing. Everything from here on appears only in typechecker output. \begin{code} - | HsCoerce ExprCoFn -- TRANSLATION + | HsWrap HsWrapper -- TRANSLATION (HsExpr id) type PendingSplice = (Name, LHsExpr Id) -- Typechecked splices, waiting to be @@ -379,10 +380,8 @@ ppr_expr (EAsPat v e) = ppr v <> char '@' <> pprParendExpr e ppr_expr (HsSCC lbl expr) = sep [ ptext SLIT("_scc_") <+> doubleQuotes (ftext lbl), pprParendExpr expr ] -ppr_expr (HsCoerce co_fn e) - = ppr_expr e <+> ptext SLIT("`cast`") <+> ppr co_fn - -ppr_expr (HsType id) = ppr id +ppr_expr (HsWrap co_fn e) = pprHsWrapper (ppr_expr e) co_fn +ppr_expr (HsType id) = ppr id ppr_expr (HsSpliceE s) = pprSplice s ppr_expr (HsBracket b) = pprHsBracket b @@ -608,7 +607,9 @@ We know the list must have at least one @Match@ in it. \begin{code} pprMatches :: (OutputableBndr id) => HsMatchContext id -> MatchGroup id -> SDoc -pprMatches ctxt (MatchGroup matches ty) = (ppr ty) $$ vcat (map (pprMatch ctxt) (map unLoc matches)) +pprMatches ctxt (MatchGroup matches ty) = vcat (map (pprMatch ctxt) (map unLoc matches)) + -- Don't print the type; it's only + -- a place-holder before typechecking -- Exported to HsBinds, which can't see the defn of HsMatchContext pprFunBind :: (OutputableBndr id) => id -> MatchGroup id -> SDoc