X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fdefstruct.impure.lisp;h=f1b06b56ab9ae5617037c2a2b3c4912e6e3d5ee7;hb=a3649ba68e298d9203e8bb1de5629ff788586fe1;hp=8f2f5b247a3f8b76c46d7e0ba6144c0ad464d7f2;hpb=d48e55084636a84d1b54f1f7370fa98c55f3ec6e;p=sbcl.git diff --git a/tests/defstruct.impure.lisp b/tests/defstruct.impure.lisp index 8f2f5b2..f1b06b5 100644 --- a/tests/defstruct.impure.lisp +++ b/tests/defstruct.impure.lisp @@ -542,6 +542,37 @@ (assert (not (bug-332b-aux-p #(1 2 3 4 5 x 1 2 bug-332a-aux)))) (assert (bug-332b-aux-p #(1 2 3 4 5 x 1 2 bug-332b-aux))) +;;; In sbcl-0.8.11.8 FBOUNDPness potential collisions of structure +;;; slot accessors signalled a condition at macroexpansion time, not +;;; when the code was actually compiled or loaded. +(let ((defstruct-form '(defstruct bug-in-0-8-11-8 x))) + (defun bug-in-0-8-11-8-x (z) (print "some unrelated thing")) + (handler-case (macroexpand defstruct-form) + (warning (c) + (error "shouldn't warn just from macroexpansion here")))) + +;;; bug 318 symptom no 1. (rest not fixed yet) +(catch :ok + (handler-bind ((error (lambda (c) + ;; Used to cause stack-exhaustion + (unless (typep c 'storege-condition) + (throw :ok))))) + (eval '(progn + (defstruct foo a) + (setf (find-class 'foo) nil) + (defstruct foo slot-1))))) + +;;; bug 348, evaluation order of slot writer arguments. Fixed by Gabor +;;; Melis. +(defstruct bug-348 x) + +(assert (eql -1 (let ((i (eval '-2)) + (x (make-bug-348))) + (funcall #'(setf bug-348-x) + (incf i) + (aref (vector x) (incf i))) + (bug-348-x x)))) + ;;; success (format t "~&/returning success~%") (quit :unix-status 104)