summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorManuel M T Chakravarty <chak@cse.unsw.edu.au>2006-08-06 21:00:58 +0000
committerManuel M T Chakravarty <chak@cse.unsw.edu.au>2006-08-06 21:00:58 +0000
commit5dc9a4504ea4d3df462081a7dbfde0431eac133e (patch)
tree29aba3bfafb86f1d1685c69781c33dc06c00155e
parente6e4036c03b21295e6457d0443106cf4e2830f4a (diff)
downloadhaskell-5dc9a4504ea4d3df462081a7dbfde0431eac133e.tar.gz
Add CoPat stuff
Wed Jul 19 09:55:27 EDT 2006 kevind@bu.edu
-rw-r--r--compiler/deSugar/Check.lhs2
-rw-r--r--compiler/typecheck/TcHsSyn.lhs8
2 files changed, 10 insertions, 0 deletions
diff --git a/compiler/deSugar/Check.lhs b/compiler/deSugar/Check.lhs
index 0b2dc08859..517dc79398 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 322a5fd69d..47231fb0a6 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