File tree 1 file changed +10
-2
lines changed
1 file changed +10
-2
lines changed Original file line number Diff line number Diff line change @@ -42,7 +42,7 @@ genVar var = do
42
42
translateFile :: Translate m => File () -> m JS. File
43
43
translateFile (File defs) = do
44
44
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
46
46
where
47
47
termDefs = [d | (TermDef d) <- defs] -- datatype defs are not translated
48
48
@@ -148,7 +148,15 @@ translatePattern expr = \case
148
148
}
149
149
150
150
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
152
160
153
161
translateStatement :: Translate m => Statement () -> m JS. Statement
154
162
translateStatement = \ case
You can’t perform that action at this time.
0 commit comments