X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fmop.impure.lisp;h=d5116f999bca40a8a6d59e87d26a0acebbce8449;hb=c8cc0137e55e6179f6af344f42e54f514660f68b;hp=b70ca1aed45423653fbe4e13589cde50c52c2ca2;hpb=abbf4da893fae087978fcdf544c85187ea9c2a9d;p=sbcl.git diff --git a/tests/mop.impure.lisp b/tests/mop.impure.lisp index b70ca1a..d5116f9 100644 --- a/tests/mop.impure.lisp +++ b/tests/mop.impure.lisp @@ -134,5 +134,41 @@ (assert (null *e-c-u-c-arg-order*)) (defclass e-c-u-c-arg-order () ()) (assert (eq *e-c-u-c-arg-order* t)) + +;;; verify that FIND-CLASS works after FINALIZE-INHERITANCE +(defclass automethod-class (standard-class) ()) +(defmethod validate-superclass ((c1 automethod-class) (c2 standard-class)) + t) +(defmethod finalize-inheritance :after ((x automethod-class)) + (format t "~&~S ~S~%" x (find-class (class-name x)))) +(defclass automethod-object () () + (:metaclass automethod-class)) +(defvar *automethod-object* (make-instance 'automethod-object)) +(assert (typep *automethod-object* 'automethod-object)) + +;;; COMPUTE-EFFECTIVE-SLOT-DEFINITION should take three arguments, one +;;; of which is the name of the slot. +(defvar *compute-effective-slot-definition-count* 0) +(defmethod compute-effective-slot-definition :before + (class (name (eql 'foo)) dsds) + (incf *compute-effective-slot-definition-count*)) +(defclass cesd-test-class () + ((foo :initarg :foo))) +(make-instance 'cesd-test-class :foo 3) +;;; FIXME: this assertion seems a little weak. I don't know why +;;; COMPUTE-EFFECTIVE-SLOT-DEFINITION gets called twice in this +;;; sequence, nor whether that's compliant with AMOP. -- CSR, +;;; 2003-04-17 +(assert (> *compute-effective-slot-definition-count* 0)) + +;;; this used to cause a nasty uncaught metacircularity in PCL. +(defclass substandard-method (standard-method) ()) +(defgeneric substandard-defgeneric (x y) + (:method-class substandard-method) + (:method ((x number) (y number)) (+ x y)) + (:method ((x string) (y string)) (concatenate 'string x y))) +(assert (= (substandard-defgeneric 1 2) 3)) +(assert (string= (substandard-defgeneric "1" "2") "12")) + ;;;; success (sb-ext:quit :unix-status 104)