aboutsummaryrefslogtreecommitdiff
path: root/tests/control-flow.lisp
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-06-21 20:20:12 +0800
committerMistivia <i@mistivia.com>2025-06-21 20:23:24 +0800
commit1cf7adef90777698d1f17363a5f82c997d5f1c34 (patch)
treeae10b7efd3dc3d20a4f798849b5edaf1a31cc47f /tests/control-flow.lisp
parent249700617406474c5b60df2aa66a2a9951603e3c (diff)
fix tco bug
Diffstat (limited to 'tests/control-flow.lisp')
-rw-r--r--tests/control-flow.lisp36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/control-flow.lisp b/tests/control-flow.lisp
index 75095ec..321aae0 100644
--- a/tests/control-flow.lisp
+++ b/tests/control-flow.lisp
@@ -27,6 +27,42 @@
(assert (= i 10))
(assert (= flag 0)))
+(let ((f nil))
+ (setq f
+ (lambda (x)
+ (cond ((> x 5) 1)
+ ((> x 0) (+ 1 1))
+ (#t (+ x 1)))))
+ (assert (= 1 (funcall f 10)))
+ (assert (= 2 (funcall f 3)))
+ (assert (= 0 (funcall f -1))))
+
+(let ((r nil))
+ (if (> 2 1)
+ (setq r 1)
+ (setq r 2))
+ (assert (= r 1)))
+
+(let ((r 1))
+ (when (> 2 1)
+ (setq r 2))
+ (assert (= r 2)))
+
+(let ((r 1))
+ (when (> 1 2)
+ (setq r 2))
+ (assert (= r 1)))
+
+(let ((r 1))
+ (unless (> 1 2)
+ (setq r 2))
+ (assert (= r 2)))
+
+(let ((r 1))
+ (unless (> 2 1)
+ (setq r 2))
+ (assert (= r 1)))
+
(assert-error (funcall (lambda () (break))))
(assert-error (funcall (lambda () (continue))))
(assert (= 1 (funcall (lambda () (return 1)))))