revision 1.2793 date: 2006/04/20 17:29:13; author: crhodes; state: Exp; lines: +1 -1 0.9.11.45: More intuitive FINALIZE-INHERITANCE behaviour ... the change for 0.9.11 fixing forward references and TYPEP made finalize-inheritance call itself recursively on subclasses. This broke clg, which is now fixed, but still... ... might as well fix the odd behaviour, and add a test for it. Index: NEWS =================================================================== RCS file: /cvsroot/sbcl/sbcl/NEWS,v retrieving revision 1.991 retrieving revision 1.992 diff -u -r1.991 -r1.992 --- NEWS 20 Apr 2006 14:25:45 -0000 1.991 +++ NEWS 20 Apr 2006 17:29:13 -0000 1.992 @@ -1,15 +1,10 @@ ;;;; -*- coding: utf-8; -*- changes in sbcl-0.9.12 relative to sbcl-0.9.11: - * Enhancements for sbcl running on the Windows operating system: - ** (user-homedir-pathname) and default initialization file - locations now know about the user's "Documents and Settings" - directory (thanks to Yaroslav Kavenchuk) - ** run-program is implemented (thanks to Mike Thomas) - ** sockets support (thanks to Timothy Ritchey) - ** better backtrace support (thanks to Alastair Bridgewater) - ** sb-grovel supported - ** asdf-install and sb-posix work somewhat - ** capable of running Slime using SWANK:*COMMUNICATION-STYLE* NIL + * minor incompatible change: in sbcl-0.9.11 (but not earlier + versions) SB-MOP:FINALIZE-INHERITANCE would recursively descend + into subclasses of the finalized class. Now user calls to + FINALIZE-INHERITANCE finalize just the one class, and calls by the + system return before any subclasses are finalized. * minor incompatible change: The reader no longer ignores errors regarding non-existent packages in #+ and #- feature tests. * new feature: command line options --no-sysinit, --no-userinit to @@ -46,6 +41,16 @@ (SETF DOCUMENTATION); only find and set documentation for structure names for the STRUCTURE doc-type. (suggested by Gary King) + * improvements to the Win32/x86 port: + ** (user-homedir-pathname) and default initialization file + locations now know about the user's "Documents and Settings" + directory (thanks to Yaroslav Kavenchuk) + ** run-program is implemented (thanks to Mike Thomas) + ** sockets support (thanks to Timothy Ritchey) + ** better backtrace support (thanks to Alastair Bridgewater) + ** sb-grovel supported + ** asdf-install and sb-posix work somewhat + ** capable of running Slime using SWANK:*COMMUNICATION-STYLE* NIL * improvements to the Solaris/x86 port: ** works on Solaris 11/Solaris Express ** floating-point exception handling support Index: version.lisp-expr =================================================================== RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v retrieving revision 1.2792 retrieving revision 1.2793 diff -u -r1.2792 -r1.2793 --- version.lisp-expr 20 Apr 2006 14:51:01 -0000 1.2792 +++ version.lisp-expr 20 Apr 2006 17:29:13 -0000 1.2793 @@ -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.11.44" +"0.9.11.45" Index: src/pcl/std-class.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/src/pcl/std-class.lisp,v retrieving revision 1.94 retrieving revision 1.95 diff -u -r1.94 -r1.95 --- src/pcl/std-class.lisp 16 Mar 2006 18:57:18 -0000 1.94 +++ src/pcl/std-class.lisp 20 Apr 2006 17:29:13 -0000 1.95 @@ -794,6 +794,8 @@ (not (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))) @@ -808,8 +810,9 @@ (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)))) + (unless finalizep + (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)