X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcArrows.lhs;h=52b22cf8e7e2749f42f810b61c6c09c68da051ec;hb=e9efdf979386e596394aee9984593d518866fe41;hp=efd01c904fd99071a2728e4e7b895f76f965b35a;hpb=ad94d40948668032189ad22a0ad741ac1f645f50;p=ghc-hetmet.git diff --git a/compiler/typecheck/TcArrows.lhs b/compiler/typecheck/TcArrows.lhs index efd01c9..52b22cf 100644 --- a/compiler/typecheck/TcArrows.lhs +++ b/compiler/typecheck/TcArrows.lhs @@ -9,7 +9,7 @@ Typecheck arrow notation -- The above warning supression flag is a temporary kludge. -- While working on this module you are encouraged to remove it and fix -- any warnings in the module. See --- http://hackage.haskell.org/trac/ghc/wiki/CodingStyle#Warnings +-- http://hackage.haskell.org/trac/ghc/wiki/Commentary/CodingStyle#Warnings -- for details module TcArrows ( tcProc ) where @@ -31,6 +31,7 @@ import TcGadt import TcPat import TcUnify import TcRnMonad +import Coercion import Inst import Name import TysWiredIn @@ -52,16 +53,18 @@ import Util \begin{code} tcProc :: InPat Name -> LHsCmdTop Name -- proc pat -> expr -> BoxyRhoType -- Expected type of whole proc expression - -> TcM (OutPat TcId, LHsCmdTop TcId) + -> TcM (OutPat TcId, LHsCmdTop TcId, CoercionI) tcProc pat cmd exp_ty = newArrowScope $ - do { (exp_ty1, res_ty) <- boxySplitAppTy exp_ty - ; (arr_ty, arg_ty) <- boxySplitAppTy exp_ty1 + do { ((exp_ty1, res_ty), coi) <- boxySplitAppTy exp_ty + ; ((arr_ty, arg_ty), coi1) <- boxySplitAppTy exp_ty1 ; let cmd_env = CmdEnv { cmd_arr = arr_ty } - ; (pat', cmd') <- tcLamPat pat arg_ty (emptyRefinement, res_ty) $ + ; (pat', cmd') <- tcProcPat pat arg_ty (emptyRefinement, res_ty) $ tcCmdTop cmd_env cmd [] - ; return (pat', cmd') } + ; let res_coi = mkTransCoI coi (mkAppTyCoI exp_ty1 coi1 res_ty IdCo) + ; return (pat', cmd', res_coi) + } \end{code} @@ -203,7 +206,7 @@ tc_cmd env cmd@(HsLam (MatchGroup [L mtch_loc (match@(Match pats maybe_rhs_sig g where n_pats = length pats stk' = drop n_pats cmd_stk - match_ctxt = LambdaExpr -- Maybe KappaExpr? + match_ctxt = (LambdaExpr :: HsMatchContext Name) -- Maybe KappaExpr? pg_ctxt = PatGuard match_ctxt tc_grhss (GRHSs grhss binds) res_ty