@@ -309,8 +309,11 @@ generateLet givenDefs givenBody =
309-- GENERATE IFS
309-- GENERATE IFS
311generateIf :: [(Canonical.Expr, Canonical.Expr)] -> Canonical.Expr -> State Int Code
311generateIf :: [(Canonical.Expr, Canonical.Expr)] -> Canonical.Expr -> State Int Code
312−generateIf branches finally =
312+generateIf givenBranches givenFinally =
314+ (branches, finally) =
315+ combineIfs givenBranches givenFinally
314 convertBranch (condition, expr) =
317 convertBranch (condition, expr) =
315 (,) <$> exprToJsExpr condition <*> exprToCode expr
318 (,) <$> exprToJsExpr condition <*> exprToCode expr
@@ -330,6 +333,19 @@ generateIf branches finally =
330 jsExpr (foldr ifExpression (toExpr jsFinally) (map (second toExpr) jsBranches))
333 jsExpr (foldr ifExpression (toExpr jsFinally) (map (second toExpr) jsBranches))
337+ :: [(Canonical.Expr, Canonical.Expr)]
339+ -> ([(Canonical.Expr, Canonical.Expr)], Canonical.Expr)
340+combineIfs branches finally =
342+ A.A _ (MultiIf subBranches subFinally) ->
343+ combineIfs (branches ++ subBranches) subFinally
333-- DEFINITIONS
349-- DEFINITIONS
335defToStatements :: Canonical.Def -> State Int [Statement ()]
351defToStatements :: Canonical.Def -> State Int [Statement ()]