diff options
-rw-r--r-- | module/language/tree-il/peval.scm | 2 | ||||
-rw-r--r-- | test-suite/tests/tree-il.test | 5 |
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)) |