X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fpcl%2Fstd-class.lisp;h=8d9dde3bfd89ad5692fd08a7f26464cae72b7903;hb=bb8121bf453353ce2cadc85d9be7be05ca6248ff;hp=02862cf8a02ce047777b2ac939e56eb5c8d41b42;hpb=f65bc6e5d42bbce340cd86e9b1c210327a70531a;p=sbcl.git diff --git a/src/pcl/std-class.lisp b/src/pcl/std-class.lisp index 02862cf..8d9dde3 100644 --- a/src/pcl/std-class.lisp +++ b/src/pcl/std-class.lisp @@ -757,16 +757,16 @@ ;;; or reinitialized. The class may or may not be finalized. (defun update-class (class finalizep) (without-package-locks - (when (or finalizep (class-finalized-p class)) - (update-cpl class (compute-class-precedence-list class)) - ;; This invocation of UPDATE-SLOTS, in practice, finalizes the - ;; class. - (update-slots class (compute-slots 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)))) + (when (or finalizep (class-finalized-p class)) + (update-cpl class (compute-class-precedence-list class)) + ;; This invocation of UPDATE-SLOTS, in practice, finalizes the + ;; class. + (update-slots class (compute-slots 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)))) (define-condition cpl-protocol-violation (reference-condition error) ((class :initarg :class :reader cpl-protocol-violation-class) @@ -866,7 +866,7 @@ wrapper nwrapper) (do* ((slots (slot-value class 'slots) (cdr slots)) (dupes nil)) - ((null slots) + ((null slots) (when dupes (style-warn "~@