(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
;; 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
(sb!c::%note-type-defined name)
(warn "defining type before %NOTE-TYPE-DEFINED is defined"))
name)
+
+(/show0 "compiler-deftype.lisp end of file")