+ (flet ((set-type-info-from-def ()
+ (setf (info :function :type name)
+ #-sb-xc-host (extract-function-type def)
+ ;; When we're built as a cross-compiler, the DEF is
+ ;; a function implemented by the cross-compilation
+ ;; host, which is opaque to us, so we have to punt here.
+ #+sb-xc-host *universal-function-type*)))
+ (ecase (info :function :where-from name)
+ (:assumed
+ (setf (info :function :where-from name) :defined)
+ (set-type-info-from-def)
+ (when (info :function :assumed-type name)
+ (setf (info :function :assumed-type name) nil)))
+ (:declared)
+ (:defined
+ (set-type-info-from-def)
+ ;; We shouldn't need to clear this here because it should be
+ ;; clear already (having been cleared when the last definition
+ ;; was processed).
+ (aver (null (info :function :assumed-type name))))))