From: Nikodemus Siivola Date: Fri, 19 Dec 2008 18:03:09 +0000 (+0000) Subject: 1.0.23.58: bug 405 has been fixed a while now X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=7522f7615389fd4e6b24d34d38ff8b4b96bb6812;p=sbcl.git 1.0.23.58: bug 405 has been fixed a while now * Fixed as of 1.0.19.32. --- diff --git a/BUGS b/BUGS index 78b9bf5..414d010 100644 --- 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) diff --git a/tests/compiler.impure.lisp b/tests/compiler.impure.lisp index 1a0f385..3a2ce24 100644 --- a/tests/compiler.impure.lisp +++ b/tests/compiler.impure.lisp @@ -1002,6 +1002,39 @@ (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)))))) + ;;;; tests not in the problem domain, but of the consistency of the ;;;; compiler machinery itself diff --git a/version.lisp-expr b/version.lisp-expr index 175a8e5..bb4371f 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"