0.9.4.74:
authorAlexey Dejneka <adejneka@comail.ru>
Sun, 18 Sep 2005 07:13:36 +0000 (07:13 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Sun, 18 Sep 2005 07:13:36 +0000 (07:13 +0000)
        * Don't optimize two-argument BACKQ-LIST* to BACKQ-CONS when
          the first argument may be expanded later (fixes a bug
          reported on cll by Alexander <malishev>).

NEWS
src/code/backq.lisp
tests/backq.impure.lisp
version.lisp-expr

diff --git a/NEWS b/NEWS
index fa545f2..0249283 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -41,6 +41,8 @@ changes in sbcl-0.9.5 relative to sbcl-0.9.4:
     by Vasile Rotaru)
   * bug fix: compiler pack phase does not modify a hashtable, which is
     iterated. (reported by Bryan O'Connor, fixed by Rob MacLachlan)
+  * bug fix: backquote does not optimize (LIST* x y) to CONS when x
+    may be expanded. (reported by Alexander <malishev> on c.l.l)
   * threads
     ** bug fix: parent thread now can be gc'ed even with a live
        child thread
index cd418aa..f194f45 100644 (file)
          (list  'quote thing))
         ((eq flag 'list*)
          (cond ((and (null (cddr thing))
+                     (not (expandable-backq-expression-p (car thing)))
                      (not (expandable-backq-expression-p (cadr thing))))
                 (cons 'backq-cons thing))
                ((expandable-backq-expression-p (car (last thing)))
index 5fea61f..6a64703 100644 (file)
@@ -61,3 +61,6 @@
 (let ((a '`(1 ,@a ,@b ,.c ,.d)))
   (let ((*print-circle* t))
     (assert (equal (read-from-string (write-to-string a)) a))))
+
+(let ((s '``(,,@(list 1 2 3) 10)))
+  (assert (equal (eval (eval s)) '(1 2 3 10))))
index b332bc6..34c868e 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.9.4.73"
+"0.9.4.74"