X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcompiler%2Fcompiler-deftype.lisp;h=322b06be4619ceb26118c5af08b4386574ffd246;hb=942e45e3bb73fd55786e4a0ab4590324063c0c89;hp=ac9f364da585d33d6bafbeac0ba8e234375818fc;hpb=cea4896b2482b7b2b429c1631d774b4cfbc0efba;p=sbcl.git diff --git a/src/compiler/compiler-deftype.lisp b/src/compiler/compiler-deftype.lisp index ac9f364..322b06b 100644 --- a/src/compiler/compiler-deftype.lisp +++ b/src/compiler/compiler-deftype.lisp @@ -11,15 +11,19 @@ (in-package "SB!IMPL") +(/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 @@ -34,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 @@ -45,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")