diff options
| author | Mistivia <i@mistivia.com> | 2025-06-21 20:20:12 +0800 |
|---|---|---|
| committer | Mistivia <i@mistivia.com> | 2025-06-21 20:23:24 +0800 |
| commit | 1cf7adef90777698d1f17363a5f82c997d5f1c34 (patch) | |
| tree | ae10b7efd3dc3d20a4f798849b5edaf1a31cc47f /tests/control-flow.lisp | |
| parent | 249700617406474c5b60df2aa66a2a9951603e3c (diff) | |
fix tco bug
Diffstat (limited to 'tests/control-flow.lisp')
| -rw-r--r-- | tests/control-flow.lisp | 36 |
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))))) |
