diff -ur src.orig/pcl/std-class.lisp src/pcl/std-class.lisp --- src.orig/pcl/std-class.lisp 2005-07-07 11:44:27.000000000 -0500 +++ src/pcl/std-class.lisp 2006-12-11 00:01:52.000000000 -0600 @@ -816,13 +816,17 @@ (when (and (not (or finalizep (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))) (setf (find-class (class-name class)) class) - (update-cpl class (compute-class-precedence-list class)) + (let ((*allow-forward-referenced-classes-in-cpl-p* + (class-has-a-forward-referenced-superclass-p class))) + (update-cpl class (compute-class-precedence-list class))) (update-slots class (compute-slots class)) (update-gfs-of-class class) (update-inits class (compute-default-initargs class)) @@ -832,6 +836,9 @@ (unless finalizep (dolist (sub (class-direct-subclasses class)) (update-class sub nil)))) +) + +(pushnew :cmucl-19d-patch-002 *features*) ;;; ;;; Set values of shared slots from initforms inherited from