0.9.14.26:
authorChristophe Rhodes <csr21@cam.ac.uk>
Wed, 19 Jul 2006 20:44:38 +0000 (20:44 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Wed, 19 Jul 2006 20:44:38 +0000 (20:44 +0000)
Make anonymous classes type specifiers.  (Reported by Pascal
Costanza sbcl-devel 2006-07-19)

src/pcl/std-class.lisp
tests/mop.impure.lisp
version.lisp-expr

index 3acc5db..28bbf00 100644 (file)
 (defmethod ensure-class-using-class ((class null) name &rest args &key)
   (multiple-value-bind (meta initargs)
       (ensure-class-values class args)
-    #+nil
-    (set-class-type-translation (class-prototype meta) name)
     (setf class (apply #'make-instance meta :name name initargs))
     (without-package-locks
       (setf (find-class name) class))
                    (order-layout-inherits
                     (map 'simple-vector #'class-wrapper
                          (reverse (rest cpl))))))
-           (register-layout layout :invalidate t))))
+           (register-layout layout :invalidate t)
+           (set-class-type-translation class (layout-classoid layout)))))
      (mapc #'make-preliminary-layout (class-direct-subclasses class)))))
 
 
index a2c85ef..d1b4172 100644 (file)
   (:metaclass funcallable-standard-class))
 (compile nil '(lambda (x) (typep x 'funcallable-class-for-typep)))
 \f
+;;; even anonymous classes should be valid types
+(let* ((class1 (make-instance 'standard-class :direct-superclasses (list (find-class 'standard-object))))
+       (class2 (make-instance 'standard-class :direct-superclasses (list class1))))
+  (assert (subtypep class2 class1))
+  (assert (typep (make-instance class2) class1)))
+\f
 ;;;; success
index e0713f0..703c542 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.14.25"
+"0.9.14.26"