diff --git a/compiler/proclaim.lisp b/compiler/proclaim.lisp index 564b5394ff8af85570124435fd6cd12c8b44f4f1..58e3a0a68a97d47dcc5ecb1a4ad74a50147da832 100644 --- a/compiler/proclaim.lisp +++ b/compiler/proclaim.lisp @@ -200,7 +200,8 @@ (setf (info type kind name) :structure) (setf (info type structure-info name) info) (when (info type expander name) - (setf (info type expander name) nil))) + (setf (info type expander name) nil)) + (%note-type-defined name)) ;;; ### Should declare arg/result types. (let ((copier (dd-copier info))) @@ -230,6 +231,20 @@ (setf (symbol-function '%compiler-defstruct) #'%%compiler-defstruct) + +;;; %NOTE-TYPE-DEFINED -- Interface +;;; +;;; Note that the type Name has been (re)defined, updating the undefined +;;; warnings and SPECIFIER-TYPE cache. +;;; +(defun %note-type-defined (name) + (declare (symbol name)) + (when (boundp '*undefined-warnings*) + (note-name-defined name :type)) + (when (boundp '*specifier-type-cache-vector*) + (specifier-type-cache-clear)) + (undefined-value)) + ;;;; Dummy definitions of COMPILER-ERROR, etc. ;;;