summaryrefslogtreecommitdiff
path: root/test-suite/tests/peval.test
diff options
context:
space:
mode:
authorIan Price <ianprice90@googlemail.com>2013-10-23 11:14:26 +0100
committerIan Price <ianprice90@googlemail.com>2014-01-07 03:37:21 +0000
commit265e7bd92a3d8720ca94d64443878d309250ecba (patch)
treeb4cadc3302a094db02754494dc3c21ef68310ee0 /test-suite/tests/peval.test
parent70511cc4037c9129cf501d87c79d19f062d56357 (diff)
downloadguile-265e7bd92a3d8720ca94d64443878d309250ecba.tar.gz
Fix inlining of tail list to apply.
Fixes <http://bugs.gnu.org/15533>. * module/language/tree-il/peval.scm (peval): Final list argument to `apply' should not be inlined if it is mutable. * test-suite/tests/peval.test ("partial evaluation"): Add test.
Diffstat (limited to 'test-suite/tests/peval.test')
-rw-r--r--test-suite/tests/peval.test16
1 files changed, 15 insertions, 1 deletions
diff --git a/test-suite/tests/peval.test b/test-suite/tests/peval.test
index 923b0d16a..5b003d26d 100644
--- a/test-suite/tests/peval.test
+++ b/test-suite/tests/peval.test
@@ -1223,4 +1223,18 @@
(call-with-prompt t
(lambda () (abort-to-prompt t 1 2 3))
(lambda (k x y z) (list x y z))))
- (apply (primitive 'list) (const 1) (const 2) (const 3))))
+ (apply (primitive 'list) (const 1) (const 2) (const 3)))
+
+ (pass-if-peval resolve-primitives
+ ;; Should not inline tail list to apply if it is mutable.
+ ;; <http://debbugs.gnu.org/15533>
+ (let ((l '()))
+ (if (pair? arg)
+ (set! l arg))
+ (apply f l))
+ (let (l) (_) ((const ()))
+ (begin
+ (if (apply (primitive pair?) (toplevel arg))
+ (set! (lexical l _) (toplevel arg))
+ (void))
+ (apply (primitive @apply) (toplevel f) (lexical l _))))))