X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fclos.impure.lisp;h=2f8d99ca32a4e14636a1e6754b317b6e6b39c930;hb=d4e550ede8beccef4312e621a644b89f9d76f74d;hp=a94d8423ae89b7d99df0c45191519408cd0198c7;hpb=3cc4b17d770f3fe95e5e94f6ac39820784968c4d;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index a94d842..2f8d99c 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -592,7 +592,9 @@ 'slot-value)) (assert (eq (funcall (lambda (x) (setf (slot-value x 'baz) 'baz)) (make-instance 'class-with-all-slots-missing)) - 'setf)) + ;; SLOT-MISSING's value is specified to be ignored; we + ;; return NEW-VALUE. + 'baz)) ;;; we should be able to specialize on anything that names a class. (defclass name-for-class () ()) @@ -661,5 +663,18 @@ (list x (call-next-method) (call-next-method x)))) (assert (equal (cnm-assignment 1) '(3 1 3))) +;;; Bug reported by Istvan Marko 2003-07-09 +(let ((class-name (gentemp))) + (loop for i from 1 to 9 + for slot-name = (intern (format nil "X~D" i)) + for initarg-name = (intern (format nil "X~D" i) :keyword) + collect `(,slot-name :initarg ,initarg-name) into slot-descs + append `(,initarg-name (list 0)) into default-initargs + finally (eval `(defclass ,class-name () + (,@slot-descs) + (:default-initargs ,@default-initargs)))) + (let ((f (compile nil `(lambda () (make-instance ',class-name))))) + (assert (typep (funcall f) class-name)))) + ;;;; success (sb-ext:quit :unix-status 104)