#include "HsVersions.h"
-import {-# SOURCE #-} DsExpr ( dsLExpr, dsLet )
+import {-# SOURCE #-} DsExpr ( dsLExpr, dsLocalBinds )
import BasicTypes ( Boxity(..) )
import HsSyn
-import TcHsSyn ( hsPatType )
+import TcHsSyn ( hsPatType, mkVanillaTuplePat )
import CoreSyn
import DsMonad -- the monadery used in the desugarer
bndrs_s = map snd stmtss_w_bndrs
-- pat is the pattern ((x1,..,xn), (y1,..,ym)) in the example above
- pat = noLoc (TuplePat pats Boxed)
+ pat = mkTuplePat pats
pats = map mk_hs_tuple_pat bndrs_s
-- Types of (x1,..,xn), (y1,..,yn) etc
-- [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 ->
mk_hs_tuple_expr ids = noLoc $ ExplicitTuple [ nlHsVar i | i <- ids ] Boxed
mk_hs_tuple_pat :: [Id] -> LPat Id
-mk_hs_tuple_pat [b] = nlVarPat b
-mk_hs_tuple_pat bs = noLoc $ TuplePat (map nlVarPat bs) Boxed
+mk_hs_tuple_pat bs = mkTuplePat (map nlVarPat bs)
\end{code}
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
--
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]
-- Smart constructor for source tuple patterns
--
-mkTuplePat :: [LPat id] -> LPat id
+mkTuplePat :: [LPat Id] -> LPat Id
mkTuplePat [lpat] = lpat
-mkTuplePat lpats = noLoc $ TuplePat lpats Boxed
+mkTuplePat lpats = noLoc $ mkVanillaTuplePat lpats Boxed
-- Smart constructor for source tuple expressions
--