summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/language/tree-il/peval.scm2
-rw-r--r--test-suite/tests/tree-il.test5
2 files changed, 6 insertions, 1 deletions
diff --git a/module/language/tree-il/peval.scm b/module/language/tree-il/peval.scm
index dcdf189a2..a6bb954e2 100644
--- a/module/language/tree-il/peval.scm
+++ b/module/language/tree-il/peval.scm
@@ -1040,7 +1040,7 @@ top-level bindings from ENV and return the resulting expression."
(match (cons name (map for-value orig-args))
(('cons head tail)
(match tail
- (($ <const> src ())
+ (($ <const> src (? (cut eq? <> '())))
(make-application src (make-primitive-ref #f 'list)
(list head)))
(($ <application> src ($ <primitive-ref> _ 'list) elts)
diff --git a/test-suite/tests/tree-il.test b/test-suite/tests/tree-il.test
index de82340a4..0b00f6f8a 100644
--- a/test-suite/tests/tree-il.test
+++ b/test-suite/tests/tree-il.test
@@ -1420,6 +1420,11 @@
(apply (toplevel top) (lexical x _)))))))
(pass-if-peval
+ ;; Constant folding: cons of #nil does not make list
+ (cons 1 #nil)
+ (apply (primitive cons) (const 1) (const '#nil)))
+
+ (pass-if-peval
;; Constant folding: cons
(begin (cons 1 2) #f)
(const #f))