Skip to content

Commit 868358b

Browse files
committed
Fix translate bug
1 parent 1172bee commit 868358b

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

src/Translate.hs

+10-2
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ genVar var = do
4242
translateFile :: Translate m => File () -> m JS.File
4343
translateFile (File defs) = do
4444
defs' <- traverse translateDef termDefs
45-
pure $ JS.File $ map JS.SDef defs' ++ [JS.SExpr $ JS.EFunCall (JS.EVar "main") []]
45+
pure $ JS.File $ map JS.SDef defs' ++ [JS.SExpr $ JS.EFunCall (JS.EVar "main") []] -- fix this
4646
where
4747
termDefs = [d | (TermDef d) <- defs] -- datatype defs are not translated
4848

@@ -148,7 +148,15 @@ translatePattern expr = \case
148148
}
149149

150150
translateSub :: Translate m => Sub () -> m JS.Sub
151-
translateSub = traverse translateStatement
151+
translateSub stmts = case reverse stmts of
152+
[] -> return []
153+
SExpr expr : rest -> do
154+
ret <- JS.SRet <$> translateExpr expr
155+
rest' <- translateSub' rest
156+
return $ reverse (ret : rest')
157+
_ -> translateSub' stmts
158+
where
159+
translateSub' = traverse translateStatement
152160

153161
translateStatement :: Translate m => Statement () -> m JS.Statement
154162
translateStatement = \case

0 commit comments

Comments
 (0)