X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fclos.impure.lisp;h=f5062b7095d1a6265e9934cf0c0af8dc50cfaa0b;hb=6c4d4d984b1af6b2a73568cec3ab9c8795cff2da;hp=60815d0aee9da692d970def2ac65fe86c14066f1;hpb=c7638557b3c7b34267daba188d345f5d284f4ac3;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index 60815d0..f5062b7 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -277,6 +277,37 @@ (defmethod gf (obj) obj) +;;; Until sbcl-0.7.7.20, some conditions weren't being signalled, and +;;; some others were of the wrong type: +(macrolet ((assert-program-error (form) + `(multiple-value-bind (value error) + (ignore-errors ,form) + (assert (null value)) + (assert (typep error 'program-error))))) + (assert-program-error (defclass foo001 () (a b a))) + (assert-program-error (defclass foo002 () + (a b) + (:default-initargs x 'a x 'b))) + (assert-program-error (defclass foo003 () + ((a :allocation :class :allocation :class)))) + (assert-program-error (defclass foo004 () + ((a :silly t)))) + ;; and some more, found by Wolfhard Buss and fixed for cmucl by Gerd + ;; Moellmann in 0.7.8.x: + (assert-program-error (progn + (defmethod odd-key-args-checking (&key (key 42)) key) + (odd-key-args-checking 3))) + (assert (= (odd-key-args-checking) 42)) + (assert (eq (odd-key-args-checking :key t) t))) + +;;; DOCUMENTATION's argument-precedence-order wasn't being faithfully +;;; preserved through the bootstrap process until sbcl-0.7.8.39. +;;; (thanks to Gerd Moellmann) +(let ((answer (documentation '+ 'function))) + (assert (stringp answer)) + (defmethod documentation ((x (eql '+)) y) "WRONG") + (assert (string= (documentation '+ 'function) answer))) + ;;;; success (sb-ext:quit :unix-status 104)