X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2FdeSugar%2FMatch.lhs;h=e148cf7d7d0dc4492d99c0550e81e10f854b3fee;hp=d6769118c608fc15fe131168a24189172dcbcd7c;hb=d2ce0f52d42edf32bb9f13796e6ba6edba8bd516;hpb=0084ab49ab3c0123c4b7f9523d092af45bccfd41 diff --git a/compiler/deSugar/Match.lhs b/compiler/deSugar/Match.lhs index d676911..e148cf7 100644 --- a/compiler/deSugar/Match.lhs +++ b/compiler/deSugar/Match.lhs @@ -346,7 +346,7 @@ matchCoercion (var:vars) ty (eqns@(eqn1:_)) = do { let CoPat co pat _ = firstPat eqn1 ; var' <- newUniqueId var (hsPatType pat) ; match_result <- match (var':vars) ty (map decomposeFirst_Coercion eqns) - ; co' <- dsCoercion co + ; co' <- dsHsWrapper co ; let rhs' = co' (Var var) ; return (mkCoLetMatchResult (NonRec var' rhs') match_result) } @@ -464,8 +464,8 @@ tidy1 v (VarPat var) = return (wrapBind var v, WildPat (idType var)) tidy1 v (VarPatOut var binds) - = do { prs <- dsLHsBinds binds - ; return (wrapBind var v . mkCoreLet (Rec prs), + = do { ds_ev_binds <- dsTcEvBinds binds + ; return (wrapBind var v . wrapDsEvBinds ds_ev_binds, WildPat (idType var)) } -- case v of { x@p -> mr[] } @@ -875,7 +875,7 @@ viewLExprEq (e1,_) (e2,_) = wrap WpHole WpHole = True wrap (WpCompose w1 w2) (WpCompose w1' w2') = wrap w1 w1' && wrap w2 w2' wrap (WpCast c) (WpCast c') = tcEqType c c' - wrap (WpApp d) (WpApp d') = d == d' + wrap (WpEvApp _) (WpEvApp _) = panic "ToDo: Match.viewLExprEq" wrap (WpTyApp t) (WpTyApp t') = tcEqType t t' -- Enhancement: could implement equality for more wrappers -- if it seems useful (lams and lets)