diff options
author | simonpj@microsoft.com <unknown> | 2010-09-13 09:50:48 +0000 |
---|---|---|
committer | simonpj@microsoft.com <unknown> | 2010-09-13 09:50:48 +0000 |
commit | d2ce0f52d42edf32bb9f13796e6ba6edba8bd516 (patch) | |
tree | 1a0792f7eb186fa3d71a02f4a21da3daae3466bb /compiler/deSugar/MatchCon.lhs | |
parent | 0084ab49ab3c0123c4b7f9523d092af45bccfd41 (diff) | |
download | haskell-d2ce0f52d42edf32bb9f13796e6ba6edba8bd516.tar.gz |
Super-monster patch implementing the new typechecker -- at last
This major patch implements the new OutsideIn constraint solving
algorithm in the typecheker, following our JFP paper "Modular type
inference with local assumptions".
Done with major help from Dimitrios Vytiniotis and Brent Yorgey.
Diffstat (limited to 'compiler/deSugar/MatchCon.lhs')
-rw-r--r-- | compiler/deSugar/MatchCon.lhs | 6 |
1 files changed, 2 insertions, 4 deletions
diff --git a/compiler/deSugar/MatchCon.lhs b/compiler/deSugar/MatchCon.lhs index 9ec7f35706..03fa325651 100644 --- a/compiler/deSugar/MatchCon.lhs +++ b/compiler/deSugar/MatchCon.lhs @@ -23,8 +23,6 @@ import HsSyn import DsBinds import DataCon import TcType -import CoreSyn -import MkCore import DsMonad import DsUtils import Util ( all2, takeList, zipEqual ) @@ -140,10 +138,10 @@ matchOneCon vars ty (eqn1 : eqns) -- All eqns for a single constructor shift (_, eqn@(EqnInfo { eqn_pats = ConPatOut{ pat_tvs = tvs, pat_dicts = ds, pat_binds = bind, pat_args = args } : pats })) - = do { prs <- dsLHsBinds bind + = do { ds_ev_binds <- dsTcEvBinds bind ; return (wrapBinds (tvs `zip` tvs1) . wrapBinds (ds `zip` dicts1) - . mkCoreLet (Rec prs), + . wrapDsEvBinds ds_ev_binds, eqn { eqn_pats = conArgPats arg_tys args ++ pats }) } -- Choose the right arg_vars in the right order for this group |