1.0.43.3: make (LOAD-TIME-VALUE (THE (VALUES FIXNUM) 42)) work again
authorNikodemus Siivola <nikodemus@random-state.net>
Thu, 30 Sep 2010 07:15:57 +0000 (07:15 +0000)
committerNikodemus Siivola <nikodemus@random-state.net>
Thu, 30 Sep 2010 07:15:57 +0000 (07:15 +0000)
 An explicit THE + VALUES broke LOAD-TIME-VALUE.

 FIxes lp#646796.

NEWS
src/compiler/ltv.lisp
tests/compiler.pure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index 16b575e..3a669e3 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -2,6 +2,8 @@
 changes relative to sbcl-1.0.43:
   * bug fix: compiler failed to derive the result-type of MAKE-ARRAY as
     (AND VECTOR (NOT SIMPLE-ARRAY)) when appropriate. (lp#309130)
+  * bug fix: (THE (VALUES ...)) in LOAD-TIME-VALUE caused a compiler-error.
+    (lp#646796)
 
 changes in sbcl-1.0.43 relative to sbcl-1.0.42:
   * incompatible change: FD-STREAMS no longer participate in the serve-event
index a695b65..cbeba89 100644 (file)
@@ -30,7 +30,7 @@ guaranteed to never be modified, so it can be put in read-only storage."
                       (cond ((consp form)
                              (let ((op (car form)))
                                (cond ((member op '(the truly-the))
-                                      (specifier-type (second form)))
+                                      (values-specifier-type (second form)))
                                      ((eq 'function op)
                                       (specifier-type 'function))
                                      ((and (legal-fun-name-p op)
index 531acc1..b809242 100644 (file)
                                   (list (vector-push-extend (svref x 0) x))))
                 ((and warning (not style-warning)) ()
                   :warning)))))
+
+(with-test (:name :bug)
+  (assert 42
+          (funcall
+           (compile nil
+                    `(lambda ()
+                       (load-time-value (the (values fixnum) 42)))))))
index 1762dfd..4b00ed2 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.43.2"
+"1.0.43.3"