on master help sign in
Only have = in generated JS, no possibility of +=, *=, etc.
c756a83Evan Czaplicki
src/Generate/JavaScript.hs+1−1
@@ -79,7 +79,7 @@ generateEffectManager moduleName effects =
79 [ "tag" ==> "fx", entry "cmdMap", entry "subMap" ]
79 [ "tag" ==> "fx", entry "cmdMap", entry "subMap" ]
80
80
81 addManager =
81 addManager =
82− JS.Assign JS.OpAssign
82+ JS.Assign
83 (JS.LBracket managers managerName)
83 (JS.LBracket managers managerName)
84 (JS.Object (managerEntries ++ otherEntries))
84 (JS.Object (managerEntries ++ otherEntries))
85 in
85 in
src/Generate/JavaScript/Builder.hs+4−40
@@ -3,7 +3,7 @@
3module Generate.JavaScript.Builder
3module Generate.JavaScript.Builder
4 ( Expr(..), Id(..), Prop(..), LValue(..)
4 ( Expr(..), Id(..), Prop(..), LValue(..)
5 , Stmt(..), Case(..), VarDecl(..)
5 , Stmt(..), Case(..), VarDecl(..)
6− , InfixOp(..), AssignOp(..), PrefixOp(..)
6+ , InfixOp(..), PrefixOp(..)
7 , stmtsToText
7 , stmtsToText
8 )
8 )
9 where
9 where
@@ -41,7 +41,7 @@ data Expr
41 | Prefix PrefixOp Expr
41 | Prefix PrefixOp Expr
42 | Infix InfixOp Expr Expr
42 | Infix InfixOp Expr Expr
43 | If Expr Expr Expr
43 | If Expr Expr Expr
44− | Assign AssignOp LValue Expr
44+ | Assign LValue Expr
45 | Call Expr [Expr] -- ^ @f(x,y,z)@, spec 11.2.3
45 | Call Expr [Expr] -- ^ @f(x,y,z)@, spec 11.2.3
46 | Function (Maybe Id) [Id] [Stmt]
46 | Function (Maybe Id) [Id] [Stmt]
47
47
@@ -120,29 +120,12 @@ data InfixOp
120 | OpAdd -- +
120 | OpAdd -- +
121
121
122
122
123−data AssignOp
124− = OpAssign -- =
125− | OpAssignAdd -- +=
126− | OpAssignSub -- -=
127− | OpAssignMul -- *=
128− | OpAssignDiv -- /=
129− | OpAssignMod -- %=
130− | OpAssignLShift -- <<=
131− | OpAssignSpRShift -- >>=
132− | OpAssignZfRShift -- >>>=
133− | OpAssignBAnd -- &=
134− | OpAssignBXor -- ^=
135− | OpAssignBOr -- |=
136−
137−
138data PrefixOp
123data PrefixOp
139 = PrefixLNot -- !
124 = PrefixLNot -- !
140 | PrefixBNot -- ~
125 | PrefixBNot -- ~
141 | PrefixPlus -- +
126 | PrefixPlus -- +
142 | PrefixMinus -- -
127 | PrefixMinus -- -
143 | PrefixTypeof -- typeof
128 | PrefixTypeof -- typeof
144− | PrefixVoid -- void
145− | PrefixDelete -- delete
146
129
147
130
148
131
@@ -435,7 +418,7 @@ fromExpr indent grouping expression =
435 , parensFor grouping (condB <> " ? " <> thenB <> " : " <> elseB)
418 , parensFor grouping (condB <> " ? " <> thenB <> " : " <> elseB)
436 )
419 )
437
420
438− Assign op lValue expr ->
421+ Assign lValue expr ->
439 let
422 let
440 (leftLines, left) =
423 (leftLines, left) =
441 fromLValue indent lValue
424 fromLValue indent lValue
@@ -444,7 +427,7 @@ fromExpr indent grouping expression =
444 fromExpr indent Whatever expr
427 fromExpr indent Whatever expr
445 in
428 in
446 ( merge leftLines rightLines
429 ( merge leftLines rightLines
447− , parensFor grouping (left <> fromAssign op <> right)
430+ , parensFor grouping (left <> " = " <> right)
448 )
431 )
449
432
450 Call function args ->
433 Call function args ->
@@ -563,25 +546,6 @@ fromPrefix op =
563 PrefixPlus -> "+"
546 PrefixPlus -> "+"
564 PrefixMinus -> "-"
547 PrefixMinus -> "-"
565 PrefixTypeof -> "typeof "
548 PrefixTypeof -> "typeof "
566− PrefixVoid -> "void "
567− PrefixDelete -> "delete "
568−
569−
570−fromAssign :: AssignOp -> Builder
571−fromAssign op =
572− case op of
573− OpAssign -> " = "
574− OpAssignAdd -> " += "
575− OpAssignSub -> " -= "
576− OpAssignMul -> " *= "
577− OpAssignDiv -> " /= "
578− OpAssignMod -> " %= "
579− OpAssignLShift -> " <<= "
580− OpAssignSpRShift -> " >>= "
581− OpAssignZfRShift -> " >>>= "
582− OpAssignBAnd -> " &= "
583− OpAssignBXor -> " ^= "
584− OpAssignBOr -> " |= "
585
549
586
550
587fromInfix :: InfixOp -> Builder
551fromInfix :: InfixOp -> Builder
src/Generate/JavaScript/Expression.hs+1−1
@@ -153,7 +153,7 @@ generateCode expr =
153 let
153 let
154 reassign name tempName =
154 reassign name tempName =
155 JS.ExprStmt $
155 JS.ExprStmt $
156− JS.Assign JS.OpAssign (JS.LVar (Var.safe name)) (ref tempName)
156+ JS.Assign (JS.LVar (Var.safe name)) (ref tempName)
157 in
157 in
158 do args' <- mapM generateJsExpr args
158 do args' <- mapM generateJsExpr args
159 tempNames <- mapM (\_ -> Var.fresh) args
159 tempNames <- mapM (\_ -> Var.fresh) args
src/Generate/JavaScript/Variable.hs+1−1
@@ -64,7 +64,7 @@ define maybeHome name body =
64 JS.LBracket (JS.ref opsDictName) (JS.String name)
64 JS.LBracket (JS.ref opsDictName) (JS.String name)
65 in
65 in
66 [ JS.VarDeclStmt [ JS.varDecl opsDictName (JS.refOrObject opsDictName) ]
66 [ JS.VarDeclStmt [ JS.varDecl opsDictName (JS.refOrObject opsDictName) ]
67− , JS.ExprStmt (JS.Assign JS.OpAssign lvalue body)
67+ , JS.ExprStmt (JS.Assign lvalue body)
68 ]
68 ]
69
69
70
70