Add CoPat stuff
authorManuel M T Chakravarty <chak@cse.unsw.edu.au>
Sun, 6 Aug 2006 21:00:58 +0000 (21:00 +0000)
committerManuel M T Chakravarty <chak@cse.unsw.edu.au>
Sun, 6 Aug 2006 21:00:58 +0000 (21:00 +0000)
Wed Jul 19 09:55:27 EDT 2006  kevind@bu.edu

compiler/deSugar/Check.lhs
compiler/typecheck/TcHsSyn.lhs

index 0b2dc08..517dc79 100644 (file)
@@ -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)
 
        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]
 -----------------
 simplify_con con (PrefixCon ps)   = PrefixCon (map simplify_lpat ps)
 simplify_con con (InfixCon p1 p2) = PrefixCon [simplify_lpat p1, simplify_lpat p2]
index 322a5fd..47231fb 100644 (file)
@@ -777,6 +777,14 @@ zonk_pat env (DictPat ds ms)
        ; ms' <- zonkIdBndrs env ms
        ; return (extendZonkEnv env (ds' ++ ms'), 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
 ---------------------------
 zonkConStuff env (PrefixCon pats)
   = do { (env', pats') <- zonkPats env pats