0.8.10.34:
authorChristophe Rhodes <csr21@cam.ac.uk>
Tue, 18 May 2004 21:52:07 +0000 (21:52 +0000)
committerChristophe Rhodes <csr21@cam.ac.uk>
Tue, 18 May 2004 21:52:07 +0000 (21:52 +0000)
Fix bug reported by Juanjo Ripoll on cmucl-imp
... MULTIPLE-VALUE-BIND can bind lambda-list keywords

NEWS
src/code/defboot.lisp
tests/smoke.impure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 3d8db4e..f251dc9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2440,6 +2440,9 @@ changes in sbcl-0.8.11 relative to sbcl-0.8.10:
   * fixed bug: as reported by Peter Graves on #lisp IRC, passing a NIL
     in keyword position to MAKE-PACKAGE was not being reported as
     invalid.
+  * fixed bug: as reported by Juan Ripoll on cmucl-imp,
+    MULTIPLE-VALUE-BIND should be able to lexically bind lambda list
+    keywords.
   * optimization: rearranged the expansion of various defining macros
     so that each expands into only one top-level form in a
     :LOAD-TOPLEVEL context; this appears to decrease fasl sizes by
@@ -2463,7 +2466,6 @@ changes in sbcl-0.8.11 relative to sbcl-0.8.10:
     ** on the Alpha, the compiler succeeds in compiling functions
        returning a known number of arguments greater than 63.
 
-
 planned incompatible changes in 0.8.x:
   * (not done yet, but planned:) When the profiling interface settles
     down, it might impact TRACE. They both encapsulate functions, and
index 625e979..79eb722 100644 (file)
@@ -40,7 +40,8 @@
       `(let ((,(car vars) ,value-form))
         ,@body)
       (let ((ignore (gensym)))
-       `(multiple-value-call #'(lambda (&optional ,@vars &rest ,ignore)
+       `(multiple-value-call #'(lambda (&optional ,@(mapcar #'list vars)
+                                        &rest ,ignore)
                                  (declare (ignore ,ignore))
                                  ,@body)
                              ,value-form)))
index d5e86b3..1b7e38d 100644 (file)
   (defconstant +const+ 3))
 (assert (= (oidentity +const+) 3))
 
+;;; MULTIPLE-VALUE-BIND and lambda list keywords
+(multiple-value-bind (&rest &optional &key &allow-other-keys)
+    (values 1 2 3)
+  (assert (= &rest 1))
+  (assert (= &optional 2))
+  (assert (= &key 3))
+  (assert (null &allow-other-keys)))
+
 ;;; success
 (quit :unix-status 104)
index 8a4f4ae..13a03f1 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".)
-"0.8.10.33"
+"0.8.10.34"