X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fpcl%2Fdefs.lisp;h=2ec1da607215a761c6de3046255ca975464c37d5;hb=9a2e730f74641e7de6ad4099111db92c5ad863bf;hp=4df534afd8f8c243e8d519fbf10f6e465d7a2170;hpb=106e6fe2df729b6027718f6f056721a95c047c17;p=sbcl.git diff --git a/src/pcl/defs.lisp b/src/pcl/defs.lisp index 4df534a..2ec1da6 100644 --- a/src/pcl/defs.lisp +++ b/src/pcl/defs.lisp @@ -187,29 +187,6 @@ (defun class-eq-type (class) (specializer-type (class-eq-specializer class))) -(defun inform-type-system-about-std-class (name) - (let ((predicate-name (make-type-predicate-name name))) - (setf (gdefinition predicate-name) - (make-type-predicate name)))) - -(defun make-type-predicate (name) - (let ((cell (find-class-cell name))) - (lambda (x) - (funcall (the function (find-class-cell-predicate cell)) x)))) - -(defun make-type-predicate-name (name &optional kind) - (if (symbol-package name) - (intern (format nil - "~@[~A ~]TYPE-PREDICATE ~A ~A" - kind - (package-name (symbol-package name)) - (symbol-name name)) - *pcl-package*) - (make-symbol (format nil - "~@[~A ~]TYPE-PREDICATE ~A" - kind - (symbol-name name))))) - ;;; internal to this file.. ;;; ;;; These functions are a pale imitation of their namesake. They accept @@ -537,7 +514,7 @@ (:metaclass std-class)) ;;; The class CLASS is a specified basic class. It is the common -;;; superclass of any kind of class. That is any class that can be a +;;; superclass of any kind of class. That is, any class that can be a ;;; metaclass must have the class CLASS in its class precedence list. (defclass class (documentation-mixin dependent-update-mixin @@ -553,6 +530,9 @@ (direct-superclasses :initform () :reader class-direct-superclasses) + ;; Note: The (CLASS-)DIRECT-SUBCLASSES for STRUCTURE-CLASSes and + ;; CONDITION-CLASSes are lazily computed whenever the subclass info + ;; becomes available, i.e. when the PCL class is created. (direct-subclasses :initform () :reader class-direct-subclasses)