1.0.23.58: bug 405 has been fixed a while now
authorNikodemus Siivola <nikodemus@random-state.net>
Fri, 19 Dec 2008 18:03:09 +0000 (18:03 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Fri, 19 Dec 2008 18:03:09 +0000 (18:03 +0000)
 * Fixed as of 1.0.19.32.

BUGS
tests/compiler.impure.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index 78b9bf5..414d010 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1598,17 +1598,6 @@ WORKAROUND:
   perhaps because CLISP has shuffled the clauses into an 
   ANSI-compliant order before proceeding.
 
-405: a TYPE-ERROR in MERGE-LETS exercised at DEBUG 3
-  In sbcl-0.9.16.21 on linux/86, compiling 
-    (declaim (optimize (debug 3)))
-    (defstruct foo bar)
-    (let ()
-      (flet ((i (x) (frob x (foo-bar foo))))
-        (i :five)))
-  causes a TYPE-ERROR 
-    The value NIL is not of type SB-C::PHYSENV.
-  in MERGE-LETS.
-
 406: functional has external references -- failed aver
  Given the following food in a single file
   (eval-when (:compile-toplevel :load-toplevel :execute)
index 1a0f385..3a2ce24 100644 (file)
     (assert (= 0 (count-full-calls "FOO-MAYBE-INLINE" fun)))
     (assert (= 1 (count-full-calls "QUUX-MARKER" fun)))))
 
+(defun file-compile (toplevel-forms &key load)
+  (let* ((lisp "compile-impure-tmp.lisp")
+         (fasl (compile-file-pathname lisp)))
+    (unwind-protect
+         (progn
+           (with-open-file (f lisp :direction :output)
+             (dolist (form toplevel-forms)
+               (prin1 form f)))
+           (multiple-value-bind (fasl warn fail) (compile-file lisp)
+             (when load
+               (load fasl))
+             (values warn fail)))
+      (ignore-errors (delete-file lisp))
+      (ignore-errors (delete-file fasl)))))
+
+(with-test (:name :bug-405)
+  ;; These used to break with a TYPE-ERROR
+  ;;     The value NIL is not of type SB-C::PHYSENV.
+  ;; in MERGE-LETS.
+  (file-compile
+   '((LET (outer-let-var)
+       (lambda ()
+         (print outer-let-var)
+         (MULTIPLE-VALUE-CALL 'some-function
+           (MULTIPLE-VALUE-CALL (LAMBDA (a) 'foo)
+             1))))))
+  (file-compile
+   '((declaim (optimize (debug 3)))
+     (defstruct bug-405-foo bar)
+     (let ()
+       (flet ((i (x) (frob x (bug-405-foo-bar foo))))
+         (i :five))))))
+
 \f
 ;;;; tests not in the problem domain, but of the consistency of the
 ;;;; compiler machinery itself
index 175a8e5..bb4371f 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"1.0.23.57"
+"1.0.23.58"