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.