X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2FdeSugar%2FDsListComp.lhs;h=7eb62ffa386b8780d1e05c816ba2658f9417f589;hb=a7ecdf96844404b7bc8273d4ff6d85759278427c;hp=643ba2ea018986bdc70d271dc3ee40a826769114;hpb=8a9aba1ff5e66aad02aba0997339ea6ec60d6b1e;p=ghc-hetmet.git diff --git a/ghc/compiler/deSugar/DsListComp.lhs b/ghc/compiler/deSugar/DsListComp.lhs index 643ba2e..7eb62ff 100644 --- a/ghc/compiler/deSugar/DsListComp.lhs +++ b/ghc/compiler/deSugar/DsListComp.lhs @@ -8,7 +8,7 @@ module DsListComp ( dsListComp, dsPArrComp ) where #include "HsVersions.h" -import {-# SOURCE #-} DsExpr ( dsLExpr, dsLet ) +import {-# SOURCE #-} DsExpr ( dsLExpr, dsLocalBinds ) import BasicTypes ( Boxity(..) ) import HsSyn @@ -183,7 +183,7 @@ deListComp (ExprStmt guard _ _ : quals) body list -- rule B above -- [e | let B, qs] = let B in [e | qs] deListComp (LetStmt binds : quals) body list = deListComp quals body list `thenDs` \ core_rest -> - dsLet binds core_rest + dsLocalBinds binds core_rest deListComp (BindStmt pat list1 _ _ : quals) body core_list2 -- rule A' above = dsLExpr list1 `thenDs` \ core_list1 -> @@ -307,7 +307,7 @@ dfListComp c_id n_id (ExprStmt guard _ _ : quals) body dfListComp c_id n_id (LetStmt binds : quals) body -- new in 1.3, local bindings = dfListComp c_id n_id quals body `thenDs` \ core_rest -> - dsLet binds core_rest + dsLocalBinds binds core_rest dfListComp c_id n_id (BindStmt pat list1 _ _ : quals) body -- evaluate the two lists @@ -420,11 +420,11 @@ dePArrComp (BindStmt p e _ _ : qs) body pa cea = -- dePArrComp (LetStmt ds : qs) body pa cea = dsLookupGlobalId mapPName `thenDs` \mapP -> - let xs = map unLoc (collectGroupBinders ds) + let xs = map unLoc (collectLocalBinders ds) ty'cea = parrElemType cea in newSysLocalDs ty'cea `thenDs` \v -> - dsLet ds (mkCoreTup (map Var xs)) `thenDs` \clet -> + dsLocalBinds ds (mkCoreTup (map Var xs)) `thenDs` \clet -> newSysLocalDs (exprType clet) `thenDs` \let'v -> let projBody = mkDsLet (NonRec let'v clet) $ mkCoreTup [Var v, Var let'v]