X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Feval.impure.lisp;h=f48801e865631e47b2fd7b9097de5a234718a438;hb=7abb9e44907ef12b52ac26d6482fbe21c036ee9b;hp=9b8a0b6d20a5238bc08e54356eec86e403e22ce4;hpb=a260738d7a71680079d972b102b4e4db4e8dc3ae;p=sbcl.git diff --git a/tests/eval.impure.lisp b/tests/eval.impure.lisp index 9b8a0b6..f48801e 100644 --- a/tests/eval.impure.lisp +++ b/tests/eval.impure.lisp @@ -18,6 +18,9 @@ (cl:in-package :cl-user) +(load "assertoid.lisp") +(use-package "ASSERTOID") + ;;; Until sbcl-0.7.9.x, EVAL was not correctly treating LOCALLY, ;;; MACROLET and SYMBOL-MACROLET, which should preserve top-levelness ;;; of their body forms: @@ -91,8 +94,35 @@ (symbol-macrolet ((foo (symbol-macrolet-bar 1))) (defmacro symbol-macrolet-bar (x) `(+ ,x 1)) (assert (= foo 2))) - + +;;; Bug reported by Paul Dietz: CONSTANTP on a self-evaluating object +;;; must return T +(assert (constantp (find-class 'symbol))) +(assert (constantp #p"")) + +;;; DEFPARAMETER must assign a dynamic variable +(let ((var (gensym))) + (assert (equal (eval `(list (let ((,var 1)) + (defparameter ,var 2) + ,var) + ,var)) + '(1 2)))) + +;;; Bug 264: SYMBOL-MACROLET did not check for a bound SPECIAL +;;; declaration +(assert (raises-error? (progv '(foo) '(1) + (eval '(symbol-macrolet ((foo 3)) + (declare (special foo)) + foo))) + error)) + +;;; MAKE-PACKAGE (and other &key functions) should signal an error +;;; when given a NIL key. This is kind of a compiler test really, but +;;; this'll do as a resting place. +(handler-case + (eval '(make-package "FOO" nil nil)) + (error () :ok) + (:no-error (c) (error "MAKE-PACKAGE succeeded: ~S" c))) + ;;; success (sb-ext:quit :unix-status 104) - -