diff options
author | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2006-08-06 21:00:58 +0000 |
---|---|---|
committer | Manuel M T Chakravarty <chak@cse.unsw.edu.au> | 2006-08-06 21:00:58 +0000 |
commit | 5dc9a4504ea4d3df462081a7dbfde0431eac133e (patch) | |
tree | 29aba3bfafb86f1d1685c69781c33dc06c00155e | |
parent | e6e4036c03b21295e6457d0443106cf4e2830f4a (diff) | |
download | haskell-5dc9a4504ea4d3df462081a7dbfde0431eac133e.tar.gz |
Add CoPat stuff
Wed Jul 19 09:55:27 EDT 2006 kevind@bu.edu
-rw-r--r-- | compiler/deSugar/Check.lhs | 2 | ||||
-rw-r--r-- | compiler/typecheck/TcHsSyn.lhs | 8 |
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 |