diff --git a/code/macros.lisp b/code/macros.lisp index f26282a22b40779e5346cdfa0a4dfa8e4d79889a..aa6773460118b7250f50fe7bc9eb6dfecb2b63cd 100644 --- a/code/macros.lisp +++ b/code/macros.lisp @@ -1519,18 +1519,23 @@ `(flet ((,n-fun () ,@body)) (if (or ,force (not *in-compilation-unit*)) - (let ((c::*unknown-functions* nil) + (let ((c::*undefined-warnings* nil) (c::*compiler-error-count* 0) (c::*compiler-warning-count* 0) (c::*compiler-note-count* 0) (*in-compilation-unit* t) (*aborted-compilation-units* 0) (,n-abort-p t)) - (unwind-protect - (multiple-value-prog1 - (,n-fun) - (setq ,n-abort-p nil)) - (c::print-summary ,n-abort-p *aborted-compilation-units*))) + (handler-bind ((c::parse-unknown-type + #'(lambda (c) + (c::note-undefined-reference + (c::parse-unknown-type-specifier x) + :type)))) + (unwind-protect + (multiple-value-prog1 + (,n-fun) + (setq ,n-abort-p nil)) + (c::print-summary ,n-abort-p *aborted-compilation-units*)))) (let ((,n-abort-p t)) (unwind-protect (multiple-value-prog1