effective-slot-definition))
(let* ((name (slot-value slotd 'name))
(class (slot-value slotd '%class)))
- (let ((table (or (gethash name *name->class->slotd-table*)
- (setf (gethash name *name->class->slotd-table*)
- (make-hash-table :test 'eq :size 5)))))
- (setf (gethash class table) slotd))
(dolist (type '(reader writer boundp))
(let* ((gf-name (ecase type
(reader 'slot-value-using-class)
(not (class-finalized-p class))
(not (class-has-a-forward-referenced-superclass-p class)))
(finalize-inheritance class)
+ (dolist (sub (class-direct-subclasses class))
+ (update-class sub nil))
(return-from update-class))
(when (or finalizep (class-finalized-p class)
(not (class-has-a-forward-referenced-superclass-p class)))
(update-gfs-of-class class)
(update-initargs class (compute-default-initargs class))
(update-ctors 'finalize-inheritance :class class))
- (dolist (sub (class-direct-subclasses class))
- (update-class sub nil))))
+ (unless finalizep
+ (dolist (sub (class-direct-subclasses class))
+ (update-class sub nil)))))
(define-condition cpl-protocol-violation (reference-condition error)
((class :initarg :class :reader cpl-protocol-violation-class)