Index: /branches/working-0711/ccl/lib/defstruct.lisp
===================================================================
--- /branches/working-0711/ccl/lib/defstruct.lisp	(revision 13362)
+++ /branches/working-0711/ccl/lib/defstruct.lisp	(revision 13363)
@@ -285,6 +285,10 @@
           (when def (set-function-info refname nil)))
         (when (symbolp refname)(fmakunbound refname)))
+      #|
+      ;; The print-function may indeed have become obsolete,
+      ;; but we can't generally remove user-defined code
       (let ((print-fn (sd-print-function sd)))
         (when (symbolp print-fn) (fmakunbound print-fn)))
+      |#
       (let ((constructor (sd-constructor sd)))
         (when (symbolp constructor) (fmakunbound constructor)))
Index: /branches/working-0711/ccl/lib/nfcomp.lisp
===================================================================
--- /branches/working-0711/ccl/lib/nfcomp.lisp	(revision 13362)
+++ /branches/working-0711/ccl/lib/nfcomp.lisp	(revision 13363)
@@ -905,5 +905,6 @@
   (let ((defenv (definition-environment env)))
     (when defenv
-      (when (non-nil-symbolp (sd-name sd))
+      (when (and (non-nil-symbolp (sd-name sd))
+                 (not (sd-type sd)))
 	(note-type-info (sd-name sd) 'class env)
         (push (make-instance 'compile-time-class :name (sd-name sd))
