X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Feval.impure.lisp;h=5989e51e5979f30c0dc2641d69184b65fae707a9;hb=ebc0f0ebf9efd39519ab86ba28c33abdb25443e0;hp=370843350497c2b581f7552bacf81607b36e8f94;hpb=76311b98b531bbda4ec2ee4ddfa654a7885d6275;p=sbcl.git diff --git a/tests/eval.impure.lisp b/tests/eval.impure.lisp index 3708433..5989e51 100644 --- a/tests/eval.impure.lisp +++ b/tests/eval.impure.lisp @@ -136,6 +136,16 @@ ((the integer 1) t 1) ((the integer (+ 1 1)) t 2) ((the integer (foo)) nil) + ((the symbol 1) nil) + ((the "bad type" 1) nil) + ((multiple-value-prog1 + (+ 1 1) + :nada) t 2) + ((multiple-value-prog1 + :nada + (/ 1 0)) nil) + ((/ 1 0) nil) + ((/ 1 1) t 1) ((+ 1 2) t 3))) (destructuring-bind (form c &optional v) test (assert (eql (constantp form) c)) @@ -178,4 +188,13 @@ (with-output-to-string (*standard-output*) (eval '(progn (princ ".") (let ((x 42)) t) (princ ".")))))) +;;; IF +(defun true () t) +(defun false () nil) +(defmacro oops () (throw :oops (list))) +(defun test-eval (ok form) (assert (eq ok (catch :oops (eval form))))) +(test-eval t '(if (false) (oops) t)) +(test-eval t '(if (true) t (oops))) +(test-eval nil '(if (not (if (false) t)) (oops))) + ;;; success