[armedbear-cvs] r13204 - trunk/abcl/src/org/armedbear/lisp
Erik Huelsmann
ehuelsmann at common-lisp.net
Sun Feb 6 16:00:19 UTC 2011
Author: ehuelsmann
Date: Sun Feb 6 11:00:16 2011
New Revision: 13204
Log:
FINALIZE-INHERITANCE (more) AMOP compatible.
Modified:
trunk/abcl/src/org/armedbear/lisp/clos.lisp
Modified: trunk/abcl/src/org/armedbear/lisp/clos.lisp
==============================================================================
--- trunk/abcl/src/org/armedbear/lisp/clos.lisp (original)
+++ trunk/abcl/src/org/armedbear/lisp/clos.lisp Sun Feb 6 11:00:16 2011
@@ -424,6 +424,10 @@
(class-precedence-list class)))
(defun std-finalize-inheritance (class)
+ ;; In case the class is already finalized, return
+ ;; immediately, as per AMOP.
+ (when (class-finalized-p class)
+ (return-from std-finalize-inheritance))
(setf (class-precedence-list class)
(funcall (if (eq (class-of class) +the-standard-class+)
#'std-compute-class-precedence-list
@@ -780,7 +784,8 @@
(t
;; We're redefining the class.
(%make-instances-obsolete old-class)
- (check-initargs old-class t all-keys)
+ (setf (class-finalized-p old-class) nil)
+ (check-initargs old-class t all-keys)
(apply #'std-after-initialization-for-classes old-class all-keys)
old-class)))
(t
More information about the armedbear-cvs
mailing list