diff options
author | Alexey Dejneka <adejneka@comail.ru> | 2005-09-18 07:13:36 +0000 |
---|---|---|
committer | Alexey Dejneka <adejneka@comail.ru> | 2005-09-18 07:13:36 +0000 |
commit | 2f6561ed6ca9478d801ebd2413cc9b4538c8e2eb (patch) | |
tree | d20400e70d05ecb364d39dc1d2e065a738a6b5df | |
parent | a898718d7224f5cab34c623f5c56685fa60a5324 (diff) |
0.9.4.74:
* 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>).
-rw-r--r-- | NEWS | 2 | ||||
-rw-r--r-- | src/code/backq.lisp | 1 | ||||
-rw-r--r-- | tests/backq.impure.lisp | 3 | ||||
-rw-r--r-- | version.lisp-expr | 2 |
4 files changed, 7 insertions, 1 deletions
@@ -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 diff --git a/src/code/backq.lisp b/src/code/backq.lisp index cd418aa40..f194f45bd 100644 --- a/src/code/backq.lisp +++ b/src/code/backq.lisp @@ -175,6 +175,7 @@ (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))) diff --git a/tests/backq.impure.lisp b/tests/backq.impure.lisp index 5fea61f56..6a647039a 100644 --- a/tests/backq.impure.lisp +++ b/tests/backq.impure.lisp @@ -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)))) diff --git a/version.lisp-expr b/version.lisp-expr index b332bc618..34c868e10 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".) -"0.9.4.73" +"0.9.4.74" |