X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Ftypecheck%2FTcArrows.lhs;h=0055d6453feb9f0f60fe7f8a2f8aca2cfae322ac;hp=c575808a97ff019905fc3c63e805cbbd026f0455;hb=6a05ec5ef5373f61b7f9f5bdc344483417fa801b;hpb=7fc749a43b4b6b85d234fa95d4928648259584f4 diff --git a/compiler/typecheck/TcArrows.lhs b/compiler/typecheck/TcArrows.lhs index c575808..0055d64 100644 --- a/compiler/typecheck/TcArrows.lhs +++ b/compiler/typecheck/TcArrows.lhs @@ -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) $ 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