1.0.7.29: better ASSOC transform
[sbcl.git] / src / compiler / compiler-deftype.lisp
index 298bc91..322b06b 100644 (file)
 
 (in-package "SB!IMPL")
 
-(file-comment "$Header$")
+(/show0 "compiler-deftype.lisp 14")
 
 (defun %compiler-deftype (name expander &optional doc)
+  (with-single-package-locked-error
+      (:symbol name "defining ~A as a type specifier"))
   (ecase (info :type :kind name)
     (:primitive
      (when *type-system-initialized*
        (error "illegal to redefine standard type: ~S" name)))
     (:instance
      (warn "The class ~S is being redefined to be a DEFTYPE." name)
-     (undefine-structure (layout-info (class-layout (sb!xc:find-class name))))
-     (setf (class-cell-class (find-class-cell name)) nil)
+     (undefine-structure (layout-info (classoid-layout (find-classoid name))))
+     (setf (classoid-cell-classoid (find-classoid-cell name)) nil)
      (setf (info :type :compiler-layout name) nil)
      (setf (info :type :kind name) :defined))
     (:defined
@@ -36,7 +38,7 @@
      ;; since mistakenly redefining a type isn't a common error
      ;; anyway, we just don't worry about trying to warn about it.
      )
-    ((nil)
+    ((nil :forthcoming-defclass-type)
      (setf (info :type :kind name) :defined)))
   (setf (info :type :expander name) expander)
   (when doc
@@ -47,3 +49,5 @@
     (sb!c::%note-type-defined name)
     (warn "defining type before %NOTE-TYPE-DEFINED is defined"))
   name)
+
+(/show0 "compiler-deftype.lisp end of file")