about summary refs log tree commit diff
path: root/boot/tests/transpile/expressions.cskt
diff options
context:
space:
mode:
Diffstat (limited to 'boot/tests/transpile/expressions.cskt')
-rw-r--r--boot/tests/transpile/expressions.cskt27
1 files changed, 27 insertions, 0 deletions
diff --git a/boot/tests/transpile/expressions.cskt b/boot/tests/transpile/expressions.cskt
new file mode 100644
index 0000000..c127b9a
--- /dev/null
+++ b/boot/tests/transpile/expressions.cskt
@@ -0,0 +1,27 @@
+precedence-aware expression emission only inserts parentheses when the
+child binds more loosely than the parent expects.
+
+<<<
+
+main = fun () {
+    var a int = 1 + 2 * 3
+    var b int = (1 + 2) * 3
+    var c int = 10 - 4 - 1
+    var d int = 10 - (4 - 1)
+    var e int = -1 + 2
+    var f bool = a == b && c != 0 || d > 0
+}
+
+>>>
+
+#include "core.c"
+void catskill_main(void);
+void catskill_main(void) {
+    integer a = 1 + 2 * 3;
+    integer b = (1 + 2) * 3;
+    integer c = 10 - 4 - 1;
+    integer d = 10 - (4 - 1);
+    integer e = -1 + 2;
+    bool f = a == b && c != 0 || d > 0;
+}
+#include "runtime.c"