diff --git a/code/macros.lisp b/code/macros.lisp index 6ef414da8c11eb3e052402c0c2d75c35bcc35ec0..cf07145279c46c5a33be470327f34af5eccfc391 100644 --- a/code/macros.lisp +++ b/code/macros.lisp @@ -189,12 +189,18 @@ :error-string 'deftype-error-string ) `(eval-when (compile load eval) - (setf (info type kind ',name) :defined) - (setf (info type expander ',name) - #'(lambda (,whole) ,@local-decs (block ,name ,body))) - ,@(when doc - `((setf (documentation ',name 'type) ,doc))) - ',name)))) + (%deftype ',name + #'(lambda (,whole) ,@local-decs (block ,name ,body)) + ,@(when doc `(,doc))))))) +;;; +(defun %deftype (name expander &optional doc) + (setf (info type kind name) :defined) + (setf (info type expander name) expander) + (when doc + (setf (documentation name 'type) doc)) + (c::%note-type-defined name) + name) + ;;; And so is DEFINE-SETF-METHOD.