Index: /branches/working-0711/ccl/compiler/optimizers.lisp
===================================================================
--- /branches/working-0711/ccl/compiler/optimizers.lisp	(revision 9389)
+++ /branches/working-0711/ccl/compiler/optimizers.lisp	(revision 9390)
@@ -643,4 +643,15 @@
     (parse-unknown-type (c) (values nil (parse-unknown-type-specifier c)))
     (error () nil)))
+
+#+debugging-version
+(defun specifier-type-if-known (typespec &optional env)
+  (handler-bind ((parse-unknown-type (lambda (c)
+                                       (break "caught unknown-type ~s" c)
+                                       (return-from specifier-type-if-known
+                                         (values nil (parse-unknown-type-specifier c)))))
+                 (error (lambda (c)
+                          (break "caught error ~s" c)
+                          (return-from specifier-type-if-known nil))))
+    (specifier-type typespec env)))
 
 
Index: /branches/working-0711/ccl/level-1/l1-clos.lisp
===================================================================
--- /branches/working-0711/ccl/level-1/l1-clos.lisp	(revision 9389)
+++ /branches/working-0711/ccl/level-1/l1-clos.lisp	(revision 9390)
@@ -154,4 +154,6 @@
 (defmethod class-default-initargs ((class class)))
 (defmethod class-direct-default-initargs ((class class)))
+
+(defmethod compile-time-class-p ((class class)) nil)
 
 (defmethod direct-slot-definition-class ((class std-class) &key (allocation :instance) &allow-other-keys)
@@ -572,5 +574,6 @@
                        (let* ((fwdref (scan-forward-refs s seen)))
                          (when fwdref (return fwdref)))))))))
-    (scan-forward-refs original ())))
+    (or (compile-time-class-p original)
+        (scan-forward-refs original ()))))
 
 (defun class-forward-referenced-superclasses (original)
@@ -625,7 +628,5 @@
     (finalize-inheritance class)
     (return-from update-class))
-  (when (or finalizep
-	    (class-finalized-p class)
-	    (not (class-has-a-forward-referenced-superclass-p class)))
+  (when (or finalizep (class-finalized-p class))
     (let* ((cpl (update-cpl class (compute-class-precedence-list  class))))
       ;; This -should- be made to work for structure classes
@@ -1201,4 +1202,10 @@
 ;;; For %compile-time-defclass
 (defclass compile-time-class (class) ())
+
+(defmethod compile-time-class-p ((class compile-time-class))
+  t)
+
+(defmethod class-finalized-p ((class compile-time-class))
+  nil)
 
 
