on master help sign in
Get rid of `return;` in Gen/JS/Builder
badd0cfEvan Czaplicki
compiler/src/Generate/JavaScript.hs+1−1
@@ -286,7 +286,7 @@ generateRealCycle home (name, _) =
286 JS.Block
286 JS.Block
287 [ JS.Var realName (JS.Call (JS.Ref safeName) [])
287 [ JS.Var realName (JS.Call (JS.Ref safeName) [])
288 , JS.ExprStmt $ JS.Assign (JS.LRef safeName) $
288 , JS.ExprStmt $ JS.Assign (JS.LRef safeName) $
289− JS.Function Nothing [] [ JS.Return (Just (JS.Ref realName)) ]
289+ JS.Function Nothing [] [ JS.Return (JS.Ref realName) ]
290 ]
290 ]
291
291
292
292
compiler/src/Generate/JavaScript/Builder.hs+2−5
@@ -69,7 +69,7 @@ data Stmt
69 | Labelled Name Stmt
69 | Labelled Name Stmt
70 | Try Stmt Name Stmt
70 | Try Stmt Name Stmt
71 | Throw Expr
71 | Throw Expr
72− | Return (Maybe Expr)
72+ | Return Expr
73 | Var Name Expr
73 | Var Name Expr
74 | Vars [(Name, Expr)]
74 | Vars [(Name, Expr)]
75 | FunctionStmt Name [Name] [Stmt]
75 | FunctionStmt Name [Name] [Stmt]
@@ -219,10 +219,7 @@ fromStmt indent statement =
219 Throw expr ->
219 Throw expr ->
220 indent <> "throw " <> snd (fromExpr indent Whatever expr) <> ";"
220 indent <> "throw " <> snd (fromExpr indent Whatever expr) <> ";"
221
221
222− Return Nothing ->
222+ Return expr ->
223− indent <> "return;\n"
224−
225− Return (Just expr) ->
226 indent <> "return " <> snd (fromExpr indent Whatever expr) <> ";\n"
223 indent <> "return " <> snd (fromExpr indent Whatever expr) <> ";\n"
227
224
228 Var name expr ->
225 Var name expr ->
compiler/src/Generate/JavaScript/Expression.hs+4−4
@@ -137,7 +137,7 @@ generate mode expression =
137
137
138 Opt.Accessor field ->
138 Opt.Accessor field ->
139 JsExpr $ JS.Function Nothing [JsName.dollar]
139 JsExpr $ JS.Function Nothing [JsName.dollar]
140− [ JS.Return $ Just $
140+ [ JS.Return $
141 JS.Access (JS.Ref JsName.dollar) (generateField mode field)
141 JS.Access (JS.Ref JsName.dollar) (generateField mode field)
142 ]
142 ]
143
143
@@ -210,7 +210,7 @@ codeToExpr code =
210 JsExpr expr ->
210 JsExpr expr ->
211 expr
211 expr
212
212
213− JsBlock [ JS.Return (Just expr) ] ->
213+ JsBlock [ JS.Return expr ] ->
214 expr
214 expr
215
215
216 JsBlock stmts ->
216 JsBlock stmts ->
@@ -224,7 +224,7 @@ codeToStmtList code =
224 stmts
224 stmts
225
225
226 JsExpr expr ->
226 JsExpr expr ->
227− [ JS.Return (Just expr) ]
227+ [ JS.Return expr ]
228
228
229 JsBlock stmts ->
229 JsBlock stmts ->
230 stmts
230 stmts
@@ -237,7 +237,7 @@ codeToStmt code =
237 JS.Block stmts
237 JS.Block stmts
238
238
239 JsExpr expr ->
239 JsExpr expr ->
240− JS.Return (Just expr)
240+ JS.Return expr
241
241
242 JsBlock [stmt] ->
242 JsBlock [stmt] ->
243 stmt
243 stmt