]> git.eshelyaron.com Git - emacs.git/commitdiff
Make lambda-lifting work again
authorMattias Engdegård <mattiase@acm.org>
Fri, 5 Mar 2021 19:21:01 +0000 (20:21 +0100)
committerMattias Engdegård <mattiase@acm.org>
Fri, 5 Mar 2021 20:41:58 +0000 (21:41 +0100)
* lisp/emacs-lisp/cconv.el (cconv--analyze-use): Fix typo.
* test/lisp/emacs-lisp/cconv-tests.el (cconv-convert-lambda-lifted):
Add test case.

lisp/emacs-lisp/cconv.el
test/lisp/emacs-lisp/cconv-tests.el

index 50a8bebf4c02860c0a32e2c471843373e8dee0aa..bd0a3e87e640d7b6a3eddb9391d9102ddcc2c170 100644 (file)
@@ -612,7 +612,7 @@ FORM is the parent form that binds this var."
      (push (cons (cons binder form) :captured+mutated)
            cconv-var-classification))
     (`(,(and binder `(,_ (function (lambda . ,_)))) nil nil nil t)
-     (push (cons (cons binder form) :lambda-candidates)
+     (push (cons (cons binder form) :lambda-candidate)
            cconv-var-classification))))
 
 (defun cconv--analyze-function (args body env parentform)
index 517373386e3e1bbebfdb793fd3f07934b234a001..5aeed0cc1555e6e93691bf7285a245ce434c27f4 100644 (file)
   (should (eq (cconv-tests-cl-defsubst) 'cl-defsubst-result)))
 
 (ert-deftest cconv-convert-lambda-lifted ()
-  "Bug#30872."
+  ;; Verify that lambda-lifting is actually performed at all.
+  (should (equal (cconv-closure-convert
+                  '#'(lambda (x) (let ((f #'(lambda () (+ x 1))))
+                                   (funcall f))))
+                 '#'(lambda (x) (let ((f #'(lambda (x) (+ x 1))))
+                                  (funcall f x)))))
+
+  ;; Bug#30872.
   (should
    (equal (funcall
            (byte-compile