;; forbidden &AUX
(dislike '(defgeneric gf-for-ll-test-13 (x y z &optional a &aux g h)))
(like '(defgeneric gf-for-ll-test-14 (x y z &optional a)))
+ (dislike '(defgeneric gf-for-ll-test-bare-aux-1 (x &aux)))
+ (like '(defgeneric gf-for-ll-test-bare-aux-2 (x)))
;; also can't use bogoDEFMETHODish type-qualifier-ish decorations
;; on required arguments
(dislike '(defgeneric gf-for-11-test-15 ((arg t))))
(defmethod gf (obj)
obj)
\f
+;;; 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)))
+\f
+;;; 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)))
+\f
;;;; success
(sb-ext:quit :unix-status 104)