0.9.7.5: one more bug in the obsolete-instance protocol
authorNikodemus Siivola <nikodemus@random-state.net>
Wed, 30 Nov 2005 09:36:41 +0000 (09:36 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Wed, 30 Nov 2005 09:36:41 +0000 (09:36 +0000)
BUGS
version.lisp-expr

diff --git a/BUGS b/BUGS
index 3512ffe..ab0e74b 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -2091,5 +2091,28 @@ WORKAROUND:
   the right fix is to remove the abstraction violation in the
   compiler's type deriver.
 
-391:
-  (fixed in sbcl-0.9.7.1)
+392: slot-accessor for subclass misses obsoleted superclass
+
+  (defclass super () 
+    ((x :initform 0 :accessor x-of)))
+  (defclass sub (super) ())
+
+  (defmethod shared-initialize :after ((i super) slots &rest init)
+    (incf (x-of i)))
+
+  (defvar *super* (make-instance 'super))
+  (defvar *sub* (make-instance 'sub))
+
+  (x-of *super*) ; => 1 ...ok
+  (x-of *sub*)   ; => 1 ...ok
+
+  (make-instances-obsolete 'super)
+
+  (x-of *sub*)   ; => 1 ...ooops! 
+  (x-of *super*) ; => 2 ...ok
+  (x-of *sub*)   ; => 2 ...got it now
+
+  (make-instances-obsolete 'super)
+
+  (x-of *sub*)          ; => 2 ...ooops, i did it again...
+  (slot-value *sub* 'x) ; => 3 ...ok but a bit late
index a21db99..e468a33 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.7.4"
+"0.9.7.5"