X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fclos.impure.lisp;h=8e6d4141c63ccc1bacdfe8d58a0e5c1d5fafed30;hb=a0a413499415738d23cc40baa44e9c404af54a94;hp=07e1cdca9858177a6bb84e0b0e0d3adf9482ceb3;hpb=b3b4928dfd6f19e3cb4fafe16873ea14a5ef9a4d;p=sbcl.git diff --git a/tests/clos.impure.lisp b/tests/clos.impure.lisp index 07e1cdc..8e6d414 100644 --- a/tests/clos.impure.lisp +++ b/tests/clos.impure.lisp @@ -70,7 +70,7 @@ (assert (expect-error (defgeneric foo2 (x a &rest)))) (defgeneric foo3 (x &rest y)) (defmethod foo3 ((x t) &rest y) nil) -(defmethod foo4 ((x t) &key y &rest z) nil) +(defmethod foo4 ((x t) &rest z &key y) nil) (defgeneric foo4 (x &rest z &key y)) (assert (expect-error (defgeneric foo5 (x &rest)))) (assert (expect-error (macroexpand-1 '(defmethod foo6 (x &rest))))) @@ -322,7 +322,29 @@ (:default-initargs :a 1) (:default-initargs :a 2))) ;; and also BUG 47d, fixed in sbcl-0.8alpha.0.26 - (assert-program-error (defgeneric if (x)))) + (assert-program-error (defgeneric if (x))) + ;; DEFCLASS should detect an error if slot names aren't suitable as + ;; variable names: + (assert-program-error (defclass foo009 () + ((:a :initarg :a)))) + (assert-program-error (defclass foo010 () + (("a" :initarg :a)))) + (assert-program-error (defclass foo011 () + ((#1a() :initarg :a)))) + (assert-program-error (defclass foo012 () + ((t :initarg :t)))) + (assert-program-error (defclass foo013 () ("a"))) + ;; specialized lambda lists have certain restrictions on ordering, + ;; repeating keywords, and the like: + (assert-program-error (defmethod foo014 ((foo t) &rest) nil)) + (assert-program-error (defmethod foo015 ((foo t) &rest x y) nil)) + (assert-program-error (defmethod foo016 ((foo t) &allow-other-keys) nil)) + (assert-program-error (defmethod foo017 ((foo t) + &optional x &optional y) nil)) + (assert-program-error (defmethod foo018 ((foo t) &rest x &rest y) nil)) + (assert-program-error (defmethod foo019 ((foo t) &rest x &optional y) nil)) + (assert-program-error (defmethod foo020 ((foo t) &key x &optional y) nil)) + (assert-program-error (defmethod foo021 ((foo t) &key x &rest y) nil))) ;;; DOCUMENTATION's argument-precedence-order wasn't being faithfully ;;; preserved through the bootstrap process until sbcl-0.7.8.39.