0.9.10.27:
authorChristophe Rhodes <csr21@cam.ac.uk>
Fri, 10 Mar 2006 17:40:27 +0000 (17:40 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Fri, 10 Mar 2006 17:40:27 +0000 (17:40 +0000)
Fix a typep / classoid / finalize-inheritance bug that was
exposed by removing the class-predicate (which meant that
classes were finalized in a different order).
... always update subclasses when we update a parent class.  No,
I don't know why (either Gerd's code or this
modification)
... test case

src/pcl/std-class.lisp
tests/clos.impure.lisp
version.lisp-expr

index 83e16de..0af7d48 100644 (file)
      (update-gfs-of-class class)
      (update-initargs class (compute-default-initargs class))
      (update-ctors 'finalize-inheritance :class class))
-   (unless finalizep
-     (dolist (sub (class-direct-subclasses class))
-       (update-class sub nil)))))
+   (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)
index 19c9102..5bdccb2 100644 (file)
         (y (make-kpreid-enode)))
     (= (slot-value x 'slot) (slot-value y 'slot))))
 \f
+;;; defining a class hierarchy shouldn't lead to spurious classoid
+;;; errors on TYPEP questions (reported by Tim Moore on #lisp
+;;; 2006-03-10)
+(defclass backwards-2 (backwards-1) (a b))
+(defclass backwards-3 (backwards-2) ())
+(defun typep-backwards-3 (x)
+  (typep x 'backwards-3))
+(defclass backwards-1 () (a b))
+(assert (not (typep-backwards-3 1)))
+(assert (not (typep-backwards-3 (make-instance 'backwards-2))))
+(assert (typep-backwards-3 (make-instance 'backwards-3)))
+\f
 ;;;; success
index acc015b..513fb86 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.10.26"
+"0.9.10.27"