;;;; -*- 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
(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
(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)))
(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)
--- /dev/null
+;;;; miscellaneous side-effectful tests of the MOP
+
+;;;; This software is part of the SBCL system. See the README file for
+;;;; more information.
+;;;;
+;;;; While most of SBCL is derived from the CMU CL system, the test
+;;;; files (like this one) were written from scratch after the fork
+;;;; from CMU CL.
+;;;;
+;;;; This software is in the public domain and is provided with
+;;;; absolutely no warranty. See the COPYING and CREDITS files for
+;;;; more information.
+
+;;; this file tests that FINALIZE-INHERITANCE behaves intuitively:
+;;; that when FINALIZE-INHERITANCE is called on a class, it returns
+;;; before subclasses are finalized.
+
+(defpackage "MOP-15"
+ (:use "CL" "SB-MOP"))
+
+(in-package "MOP-15")
+
+(defclass mop-15-class (standard-class) ())
+
+(defmethod validate-superclass ((s mop-15-class) (super standard-class))
+ t)
+
+(defvar *count* 0)
+(defvar *max-count* 0)
+
+(defmethod finalize-inheritance ((c mop-15-class))
+ (let ((*count* (1+ *count*)))
+ (when (> *count* *max-count*)
+ (setf *max-count* *count*))
+ (call-next-method)))
+
+(defclass sub (super)
+ ()
+ (:metaclass mop-15-class))
+
+(defclass super ()
+ ()
+ (:metaclass mop-15-class))
+
+(finalize-inheritance (find-class 'super))
+(finalize-inheritance (find-class 'sub))
+
+(assert (= *max-count* 1))
;;; 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"