about summary refs log tree commit diff
path: root/boot/tests/transpile/conditionals.cskt
diff options
context:
space:
mode:
Diffstat (limited to 'boot/tests/transpile/conditionals.cskt')
-rw-r--r--boot/tests/transpile/conditionals.cskt37
1 files changed, 37 insertions, 0 deletions
diff --git a/boot/tests/transpile/conditionals.cskt b/boot/tests/transpile/conditionals.cskt
new file mode 100644
index 0000000..96c3877
--- /dev/null
+++ b/boot/tests/transpile/conditionals.cskt
@@ -0,0 +1,37 @@
+if/else-if/else chains and nested conditionals emit as a single
+chained `if () { } else if () { } else { }` c block.
+
+<<<
+
+classify = fun (n int) int {
+    if n < 0 {
+        return -1
+    } else if n == 0 {
+        return 0
+    } else {
+        return 1
+    }
+}
+
+main = fun () {
+    classify(5)
+}
+
+>>>
+
+#include "core.c"
+integer classify(integer n);
+void catskill_main(void);
+integer classify(integer n) {
+    if (n < 0) {
+        return -1;
+    } else if (n == 0) {
+        return 0;
+    } else {
+        return 1;
+    }
+}
+void catskill_main(void) {
+    classify(5);
+}
+#include "runtime.c"