;;; that it is at least possible to define classes with that as a
;;; metaclass.
(defclass gf-class (standard-generic-function) ()
- (:metaclass sb-pcl::funcallable-standard-class))
+ (:metaclass funcallable-standard-class))
(defgeneric g (a b c)
(:generic-function-class gf-class))
\f
;;; of all built-in-classes is of the relevant type)
(assert (null (class-prototype (find-class 'null))))
\f
-;;; simple consistency checks for the SB-PCL (perhaps AKA SB-MOP)
-;;; package: all of the functionality specified in AMOP is in
-;;; functions:
-(assert (null (loop for x being each external-symbol in "SB-PCL"
- unless (fboundp x) collect x)))
-;;; and all generic functions in SB-PCL have at least one specified
+;;; simple consistency checks for the SB-MOP package: all of the
+;;; functionality specified in AMOP is in functions and classes:
+(assert (null (loop for x being each external-symbol in "SB-MOP"
+ unless (or (fboundp x) (find-class x)) collect x)))
+;;; and all generic functions in SB-MOP have at least one specified
;;; method, except for UPDATE-DEPENDENT
-(assert (null (loop for x being each external-symbol in "SB-PCL"
- unless (or (eq x 'update-dependent)
+(assert (null (loop for x being each external-symbol in "SB-MOP"
+ unless (or (not (fboundp x))
+ (eq x 'update-dependent)
(not (typep (fdefinition x) 'generic-function))
(> (length (generic-function-methods
(fdefinition x)))
(assert (null *e-c-u-c-arg-order*))
(defclass e-c-u-c-arg-order () ())
(assert (eq *e-c-u-c-arg-order* t))
+\f
+;;; 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))
+\f
+;;; 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))
+\f
;;;; success
(sb-ext:quit :unix-status 104)