summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRose Hogenson <rosehogenson@posteo.net>2024-04-27 07:44:47 -0700
committerRose Hogenson <rosehogenson@posteo.net>2024-04-27 07:44:47 -0700
commit1d35d3c0780b1f5392517fe3c1e30950de79efb4 (patch)
tree081833157bb2c8d740d48c746e7d3894af2e2859
parent278ee46f0fa93a3db4ebdc6878fcd9b1d990094a (diff)
downloadsml-1d35d3c0780b1f5392517fe3c1e30950de79efb4.tar.zst
Add tests for let.
-rw-r--r--codegen.sml2
-rw-r--r--tests/05-let.sml4
-rw-r--r--tests/06-let-multiple.sml6
3 files changed, 11 insertions, 1 deletions
diff --git a/codegen.sml b/codegen.sml
index befedac..c7f0f2d 100644
--- a/codegen.sml
+++ b/codegen.sml
@@ -124,7 +124,7 @@ struct
foldl
(fn (off, (arg, ops)) =>
(Syntax.VVar tempReg, Syntax.OPeek (tempReg, off, translateVal arg) :: ops))
- (arg, [])
+ (translateVal arg, [])
path
in rev (Syntax.OPoke (i, translate res, temp) :: ops)
end)
diff --git a/tests/05-let.sml b/tests/05-let.sml
new file mode 100644
index 0000000..d1c27f5
--- /dev/null
+++ b/tests/05-let.sml
@@ -0,0 +1,4 @@
+val _ =
+ let val x = 42 in
+ __builtin "exit" x
+ end
diff --git a/tests/06-let-multiple.sml b/tests/06-let-multiple.sml
new file mode 100644
index 0000000..47441ac
--- /dev/null
+++ b/tests/06-let-multiple.sml
@@ -0,0 +1,6 @@
+val _ =
+ let
+ val x = 42
+ val y = x
+ in __builtin "exit" y
+ end