From: Mattias EngdegÄrd Date: Fri, 5 Mar 2021 19:21:01 +0000 (+0100) Subject: Make lambda-lifting work again X-Git-Tag: emacs-28.0.90~3423 X-Git-Url: http://git.eshelyaron.com/gitweb/?a=commitdiff_plain;h=1362a9fec4dff341a84c881ac17dbf1ee2cf82fd;p=emacs.git Make lambda-lifting work again * lisp/emacs-lisp/cconv.el (cconv--analyze-use): Fix typo. * test/lisp/emacs-lisp/cconv-tests.el (cconv-convert-lambda-lifted): Add test case. --- diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el index 50a8bebf4c0..bd0a3e87e64 100644 --- a/lisp/emacs-lisp/cconv.el +++ b/lisp/emacs-lisp/cconv.el @@ -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) diff --git a/test/lisp/emacs-lisp/cconv-tests.el b/test/lisp/emacs-lisp/cconv-tests.el index 517373386e3..5aeed0cc155 100644 --- a/test/lisp/emacs-lisp/cconv-tests.el +++ b/test/lisp/emacs-lisp/cconv-tests.el @@ -182,7 +182,14 @@ (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