X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fmop.pure.lisp;h=4b4bb1550e73a4e6b8bdfdc089c6ac1c08ce3724;hb=062283b901155792f65775491aea51481c56faaa;hp=cb60b2545f17578ae8128f5cea1c6c4f3788cd45;hpb=554303a5217026139af0c1b18632155d70c09eb0;p=sbcl.git diff --git a/tests/mop.pure.lisp b/tests/mop.pure.lisp index cb60b25..4b4bb15 100644 --- a/tests/mop.pure.lisp +++ b/tests/mop.pure.lisp @@ -85,3 +85,55 @@ (sb-mop:class-direct-superclasses (make-instance 'standard-class)))) (assert (equal (list (find-class 'sb-mop:funcallable-standard-object)) (sb-mop:class-direct-superclasses (make-instance 'sb-mop:funcallable-standard-class)))) + +(with-test (:name :bug-936513) + ;; This used to fail as ENSURE-GENERIC-FUNCTION wanted a list specifying + ;; the method combination, and didn't accept the actual object + (let ((mc (sb-pcl:find-method-combination #'make-instance 'standard nil))) + (ensure-generic-function 'make-instance :method-combination mc)) + ;; Let's make sure the list works too... + (ensure-generic-function 'make-instance :method-combination '(standard))) + +(with-test (:name :bug-309072) + ;; original reported test cases + (raises-error? (make-instance 'sb-mop:slot-definition)) + (raises-error? (make-instance 'sb-mop:slot-definition :name 'pi)) + (raises-error? (make-instance 'sb-mop:slot-definition :name 3)) + ;; extra cases from the MOP dictionary + (raises-error? (make-instance 'sb-mop:slot-definition :name 'x + :initform nil)) + (raises-error? (make-instance 'sb-mop:slot-definition :name 'x + :initfunction (lambda () nil))) + (raises-error? (make-instance 'sb-mop:slot-definition :name 'x + :initfunction (lambda () nil))) + (raises-error? (make-instance 'sb-mop:slot-definition :name 'x + :allocation "")) + (raises-error? (make-instance 'sb-mop:slot-definition :name 'x + :initargs "")) + (raises-error? (make-instance 'sb-mop:slot-definition :name 'x + :initargs '(foo . bar))) + (raises-error? (make-instance 'sb-mop:slot-definition :name 'x + :initargs '(foo bar 3))) + (raises-error? (make-instance 'sb-mop:slot-definition :name 'x + :documentation '(()))) + ;; distinction between DIRECT- and EFFECTIVE- slot definitions + (raises-error? (make-instance 'sb-mop:effective-slot-definition + :name 'x :readers '(foo))) + (raises-error? (make-instance 'sb-mop:effective-slot-definition + :name 'x :writers '(foo))) + (make-instance 'sb-mop:direct-slot-definition + :name 'x :readers '(foo)) + (make-instance 'sb-mop:direct-slot-definition + :name 'x :writers '(foo)) + (raises-error? (make-instance 'sb-mop:direct-slot-definition + :name 'x :readers "")) + (raises-error? (make-instance 'sb-mop:direct-slot-definition + :name 'x :readers '(3))) + (raises-error? (make-instance 'sb-mop:direct-slot-definition + :name 'x :readers '(foo . bar))) + (raises-error? (make-instance 'sb-mop:direct-slot-definition + :name 'x :writers "")) + (raises-error? (make-instance 'sb-mop:direct-slot-definition + :name 'x :writers '(3))) + (raises-error? (make-instance 'sb-mop:direct-slot-definition + :name 'x :writers '(foo . bar))))