-
- Downloads
Fix TYPEP/SUBTYPEP problems with unfinalized and
forward-referenced classes. * pcl/std-class.lisp (class-finalized-p): Method removed. (*allow-forward-referenced-classes-in-cpl-p*): New variable. (make-preliminary-layout): New function. (shared-initialize) <:after std-class>: Call make-preliminary-layout. (shared-initialize) <:after forward-referenced-class>: New method calling make-preliminary-layout. (shared-initialize) <:after structure-class>: Set finalized-p slot to true. (update-slots): Likewise. (shared-initialize) <:after condition-class>: Likewise. (inform-type-system-about-class): New method for forward-referenced classes. (class-has-a-forward-referenced-superclass-p): Moved to info.lisp. * pcl/cpl.lisp (compute-std-cpl-phase-1): Allow forward-referenced classes in the cpl if *allow-forward-referenced-classes-in-cpl-p* is true. * info.lisp (class-has-a-forward-referenced-superclass-p): Moved here from std-class.lisp. * pcl/cache.lisp (make-wrapper): Handle forward-referenced classes. * pcl/braid.lisp (bootstrap-initialize-class): Set the finalized-p slot. * pcl/defs.lisp (class): Add slot finalized-p. * pcl/rt/defclass.lisp (defclass-types.[0-5]) (defclass-forward-referenced-class.0): New tests. Misc fixes. * pcl/defclass.lisp (expand-defclass): Remove code papering over a potential compiler bug. * pcl/macros.lisp (find-class-cell-make-instance-function-keys): Removed. (setf find-class): Add errorp and environment parameters, call (setf kernel::find-class) if new-value is nil.
Showing
- pcl/braid.lisp 3 additions, 2 deletionspcl/braid.lisp
- pcl/cache.lisp 5 additions, 3 deletionspcl/cache.lisp
- pcl/cpl.lisp 4 additions, 2 deletionspcl/cpl.lisp
- pcl/defclass.lisp 2 additions, 5 deletionspcl/defclass.lisp
- pcl/defs.lisp 4 additions, 1 deletionpcl/defs.lisp
- pcl/info.lisp 7 additions, 2 deletionspcl/info.lisp
- pcl/macros.lisp 10 additions, 11 deletionspcl/macros.lisp
- pcl/rt/defclass.lisp 66 additions, 2 deletionspcl/rt/defclass.lisp
- pcl/std-class.lisp 61 additions, 24 deletionspcl/std-class.lisp
Loading
Please register or sign in to comment