From 5dc9a4504ea4d3df462081a7dbfde0431eac133e Mon Sep 17 00:00:00 2001 From: Manuel M T Chakravarty Date: Sun, 6 Aug 2006 21:00:58 +0000 Subject: [PATCH] Add CoPat stuff Wed Jul 19 09:55:27 EDT 2006 kevind@bu.edu --- compiler/deSugar/Check.lhs | 2 ++ compiler/typecheck/TcHsSyn.lhs | 8 ++++++++ 2 files changed, 10 insertions(+) diff --git a/compiler/deSugar/Check.lhs b/compiler/deSugar/Check.lhs index 0b2dc08..517dc79 100644 --- a/compiler/deSugar/Check.lhs +++ b/compiler/deSugar/Check.lhs @@ -675,6 +675,8 @@ simplify_pat (DictPat dicts methods) num_of_d_and_ms = length dicts + length methods dict_and_method_pats = map VarPat (dicts ++ methods) +simplify_pat (CoPat co pat ty) = simplify_pat pat + ----------------- simplify_con con (PrefixCon ps) = PrefixCon (map simplify_lpat ps) simplify_con con (InfixCon p1 p2) = PrefixCon [simplify_lpat p1, simplify_lpat p2] diff --git a/compiler/typecheck/TcHsSyn.lhs b/compiler/typecheck/TcHsSyn.lhs index 322a5fd..47231fb 100644 --- a/compiler/typecheck/TcHsSyn.lhs +++ b/compiler/typecheck/TcHsSyn.lhs @@ -777,6 +777,14 @@ zonk_pat env (DictPat ds ms) ; ms' <- zonkIdBndrs env ms ; return (extendZonkEnv env (ds' ++ ms'), DictPat ds' ms') } +zonk_pat env (CoPat co_fn pat ty) + = do { (env', co_fn') <- zonkCoFn env co_fn + ; (env'', pat') <- zonkPat env' (noLoc pat) + ; ty' <- zonkTcTypeToType env'' ty + ; return (env'', CoPat co_fn' (unLoc pat') ty') } + +zonk_pat env pat = pprPanic "zonk_pat" (ppr pat) + --------------------------- zonkConStuff env (PrefixCon pats) = do { (env', pats') <- zonkPats env pats -- 1.7.10.4