0.7.4.2:
authorWilliam Harold Newman <william.newman@airmail.net>
Sun, 26 May 2002 20:28:27 +0000 (20:28 +0000)
committerWilliam Harold Newman <william.newman@airmail.net>
Sun, 26 May 2002 20:28:27 +0000 (20:28 +0000)
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
src/cold/shared.lisp
version.lisp-expr

index 5bf3aa3..3f0a53d 100644 (file)
              (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)))
index 3bcf508..f17fedf 100644 (file)
            (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.
index 76aca69..9153568 100644 (file)
@@ -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"