From e8f173ff44bc069db48585c8844f2d1097bb47d2 Mon Sep 17 00:00:00 2001 From: William Harold Newman Date: Sun, 26 May 2002 20:28:27 +0000 Subject: [PATCH] 0.7.4.2: merged patch from Antonio Martinez (sbcl-devel 22 May 2002)... ...more full-featured restarts in COMPILE-STEM so that it can be less painful to resume compilation after fixing a minor problem ...DECLARE IGNORE so that old CMU CL works as xc host again --- src/code/late-type.lisp | 1 + src/cold/shared.lisp | 54 +++++++++++++++++++++++++++-------------------- version.lisp-expr | 2 +- 3 files changed, 33 insertions(+), 24 deletions(-) diff --git a/src/code/late-type.lisp b/src/code/late-type.lisp index 5bf3aa3..3f0a53d 100644 --- a/src/code/late-type.lisp +++ b/src/code/late-type.lisp @@ -2166,6 +2166,7 @@ (values nil certain?)))))) (!define-type-method (union :complex-=) (type1 type2) + (declare (ignore type1)) (if (some #'hairy-type-p (union-type-types type2)) (values nil nil) (values nil t))) diff --git a/src/cold/shared.lisp b/src/cold/shared.lisp index 3bcf508..f17fedf 100644 --- a/src/cold/shared.lisp +++ b/src/cold/shared.lisp @@ -163,29 +163,37 @@ (truename stream))) ;; Try to use the compiler to generate a new temporary object file. - (multiple-value-bind (output-truename warnings-p failure-p) - (funcall compile-file src :output-file tmp-obj) - (declare (ignore warnings-p)) - (cond ((not output-truename) - (error "couldn't compile ~S" src)) - (failure-p - (if ignore-failure-p - (warn "ignoring FAILURE-P return value from compilation of ~S" - src) - (unwind-protect - (progn - ;; FIXME: This should have another option, - ;; redoing compilation. - (cerror "Continue, using possibly-bogus ~S." - "FAILURE-P was set when creating ~S." - obj) - (setf failure-p nil)) - ;; Don't leave failed object files lying around. - (when (and failure-p (probe-file tmp-obj)) - (delete-file tmp-obj) - (format t "~&deleted ~S~%" tmp-obj))))) - ;; Otherwise: success, just fall through. - (t nil))) + (flet ((report-recompile-restart (stream) + (format stream "Recompile file ~S" src)) + (report-continue-restart (stream) + (format stream "Continue, using possibly bogus file ~S" obj))) + (tagbody + retry-compile-file + (multiple-value-bind (output-truename warnings-p failure-p) + (funcall compile-file src :output-file tmp-obj) + (declare (ignore warnings-p)) + (cond ((not output-truename) + (error "couldn't compile ~S" src)) + (failure-p + (if ignore-failure-p + (warn "ignoring FAILURE-P return value from compilation of ~S" + src) + (unwind-protect + (restart-case + (error "FAILURE-P was set when creating ~S." + obj) + (recompile () + :report report-recompile-restart + (go retry-compile-file)) + (continue () + :report report-continue-restart + (setf failure-p nil))) + ;; Don't leave failed object files lying around. + (when (and failure-p (probe-file tmp-obj)) + (delete-file tmp-obj) + (format t "~&deleted ~S~%" tmp-obj))))) + ;; Otherwise: success, just fall through. + (t nil))))) ;; If we get to here, compilation succeeded, so it's OK to rename ;; the temporary output file to the permanent object file. diff --git a/version.lisp-expr b/version.lisp-expr index 76aca69..9153568 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; for internal versions, especially for internal versions off the ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.4.1" +"0.7.4.2" -- 1.7.10.4