Module header tidyup, phase 1
[ghc-hetmet.git] / compiler / deSugar / DsExpr.lhs
index 5ffae6d..4a5521c 100644 (file)
@@ -1,66 +1,59 @@
 %
+% (c) The University of Glasgow 2006
 % (c) The GRASP/AQUA Project, Glasgow University, 1992-1998
 %
-\section[DsExpr]{Matching expressions (Exprs)}
+
+Desugaring exporessions.
 
 \begin{code}
 module DsExpr ( dsExpr, dsLExpr, dsLocalBinds, dsValBinds, dsLit ) where
 
 #include "HsVersions.h"
 #if defined(GHCI) && defined(BREAKPOINT)
-import Foreign.StablePtr ( newStablePtr, castStablePtrToPtr )
-import GHC.Exts         ( Ptr(..), Int(..), addr2Int# )
-import IOEnv            ( ioToIOEnv )
-import PrelNames        ( breakpointJumpName, breakpointCondJumpName )
-import TysWiredIn       ( unitTy )
-import TypeRep          ( Type(..) )
-import TyCon            ( isUnLiftedTyCon )
+import Foreign.StablePtr
+import GHC.Exts
+import IOEnv
+import PrelNames
+import TysWiredIn
+import TypeRep
+import TyCon
 #endif
 
-import Match           ( matchWrapper, matchSinglePat, matchEquations )
-import MatchLit                ( dsLit, dsOverLit )
-import DsBinds         ( dsLHsBinds, dsCoercion )
-import DsGRHSs         ( dsGuarded )
-import DsListComp      ( dsListComp, dsPArrComp )
-import DsUtils         ( mkErrorAppDs, mkStringExpr, mkConsExpr, mkNilExpr,
-                         extractMatchResult, cantFailMatchResult, matchCanFail,
-                         mkCoreTupTy, selectSimpleMatchVarL, lookupEvidence, selectMatchVar )
-import DsArrows                ( dsProcExpr )
+import Match
+import MatchLit
+import DsBinds
+import DsGRHSs
+import DsListComp
+import DsUtils
+import DsArrows
 import DsMonad
 
 #ifdef GHCI
        -- Template Haskell stuff iff bootstrapped
-import DsMeta          ( dsBracket )
+import DsMeta
 #endif
 
 import HsSyn
-import TcHsSyn         ( hsLPatType, mkVanillaTuplePat )
+import TcHsSyn
 
 -- NB: The desugarer, which straddles the source and Core worlds, sometimes
---     needs to see source types (newtypes etc), and sometimes not
---     So WATCH OUT; check each use of split*Ty functions.
--- Sigh.  This is a pain.
-
-import TcType          ( tcSplitAppTy, tcSplitFunTys, tcTyConAppTyCon, 
-                         tcTyConAppArgs, isUnLiftedType, Type, mkAppTy )
-import Type            ( splitFunTys, isUnboxedTupleType, mkFunTy )
+--     needs to see source types
+import TcType
+import Type
 import CoreSyn
-import CoreUtils       ( exprType, mkIfThenElse, bindNonRec )
-
-import CostCentre      ( mkUserCC )
-import Id              ( Id, idType, idName, idDataCon )
-import PrelInfo                ( rEC_CON_ERROR_ID )
-import DataCon         ( DataCon, dataConWrapId, dataConFieldLabels, dataConInstOrigArgTys )
-import DataCon         ( isVanillaDataCon )
-import TyCon           ( FieldLabel, tyConDataCons )
-import TysWiredIn      ( tupleCon )
-import BasicTypes      ( RecFlag(..), Boxity(..), ipNameName )
-import PrelNames       ( toPName,
-                         returnMName, bindMName, thenMName, failMName,
-                         mfixName )
-import SrcLoc          ( Located(..), unLoc, getLoc, noLoc )
-import Util            ( zipEqual, zipWithEqual )
-import Bag             ( bagToList )
+import CoreUtils
+
+import CostCentre
+import Id
+import PrelInfo
+import DataCon
+import TyCon
+import TysWiredIn
+import BasicTypes
+import PrelNames
+import SrcLoc
+import Util
+import Bag
 import Outputable
 import FastString
 \end{code}
@@ -121,7 +114,7 @@ ds_val_bind (NonRecursive, hsbinds) body
       FunBind { fun_id = L _ fun, fun_matches = matches, fun_co_fn = co_fn }
        -> matchWrapper (FunRhs (idName fun)) matches           `thenDs` \ (args, rhs) ->
           ASSERT( null args )  -- Functions aren't lifted
-          ASSERT( isIdCoercion co_fn )
+          ASSERT( isIdHsWrapper co_fn )
           returnDs (bindNonRec fun rhs body_w_exports)
 
       PatBind {pat_lhs = pat, pat_rhs = grhss, pat_rhs_ty = ty }
@@ -205,7 +198,7 @@ dsExpr (HsVar var)                = returnDs (Var var)
 dsExpr (HsIPVar ip)                  = returnDs (Var (ipNameName ip))
 dsExpr (HsLit lit)                   = dsLit lit
 dsExpr (HsOverLit lit)               = dsOverLit lit
-dsExpr (HsCoerce co_fn e)     = dsCoercion co_fn (dsExpr e)
+dsExpr (HsWrap co_fn e)     = dsCoercion co_fn (dsExpr e)
 
 dsExpr (NegApp expr neg_expr) 
   = do { core_expr <- dsLExpr expr
@@ -217,7 +210,7 @@ dsExpr expr@(HsLam a_Match)
     returnDs (mkLams binders matching_code)
 
 #if defined(GHCI) && defined(BREAKPOINT)
-dsExpr (HsApp (L _ (HsApp realFun@(L _ (HsCoerce _ fun)) (L loc arg))) _)
+dsExpr (HsApp (L _ (HsApp realFun@(L _ (HsWrap _ fun)) (L loc arg))) _)
     | HsVar funId <- fun
     , idName funId `elem` [breakpointJumpName, breakpointCondJumpName]
     , ids <- filter (isValidType . idType) (extractIds arg)
@@ -233,7 +226,7 @@ dsExpr (HsApp (L _ (HsApp realFun@(L _ (HsCoerce _ fun)) (L loc arg))) _)
           extractIds (HsApp fn arg)
               | HsVar argId <- unLoc arg
               = argId:extractIds (unLoc fn)
-              | HsCoerce co_fn arg' <- unLoc arg
+              | HsWrap co_fn arg' <- unLoc arg
               , HsVar argId <- arg'            -- SLPJ: not sure what is going on here
               = error (showSDoc (ppr co_fn)) -- argId:extractIds (unLoc fn)
           extractIds x = []