0.9.11.43:
[sbcl.git] / src / pcl / methods.lisp
index 3358df9..9f43c63 100644 (file)
                (set-structure-svuc-method type method)))))))
 
 (defun mec-all-classes-internal (spec precompute-p)
-  (cons (specializer-class spec)
-        (and (classp spec)
-             precompute-p
-             (not (or (eq spec *the-class-t*)
-                      (eq spec *the-class-slot-object*)
-                      (eq spec *the-class-standard-object*)
-                      (eq spec *the-class-structure-object*)))
-             (let ((sc (class-direct-subclasses spec)))
-               (when sc
-                 (mapcan (lambda (class)
-                           (mec-all-classes-internal class precompute-p))
-                         sc))))))
+  (unless (invalid-wrapper-p (class-wrapper (specializer-class spec)))
+    (cons (specializer-class spec)
+          (and (classp spec)
+               precompute-p
+               (not (or (eq spec *the-class-t*)
+                        (eq spec *the-class-slot-object*)
+                        (eq spec *the-class-standard-object*)
+                        (eq spec *the-class-structure-object*)))
+               (let ((sc (class-direct-subclasses spec)))
+                 (when sc
+                   (mapcan (lambda (class)
+                             (mec-all-classes-internal class precompute-p))
+                           sc)))))))
 
 (defun mec-all-classes (spec precompute-p)
   (let ((classes (mec-all-classes-internal spec precompute-p)))