summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorToby Cubitt <toby@dr-qubit.org>2021-03-20 10:01:13 +0100
committerLars Ingebrigtsen <larsi@gnus.org>2021-03-20 10:01:19 +0100
commite33c2bfbf3f62449a9b62de423a1bbe3a39a3dca (patch)
tree9e64c9d7d6005d8fa3530b7f2da02919269290c3
parentf85b66d9b02ed440fc08e5c4dc987bbff9be97d6 (diff)
downloademacs-e33c2bfbf3f62449a9b62de423a1bbe3a39a3dca.tar.gz
Fix cl-progv binding order
* lisp/emacs-lisp/cl-macs.el (cl-progv): Bind variables in the correct order (bug#47272).
-rw-r--r--lisp/emacs-lisp/cl-macs.el3
-rw-r--r--test/lisp/emacs-lisp/cl-macs-tests.el5
2 files changed, 7 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index 9eabfc63b4a..27ed07b6673 100644
--- a/lisp/emacs-lisp/cl-macs.el
+++ b/lisp/emacs-lisp/cl-macs.el
@@ -1976,7 +1976,8 @@ a `let' form, except that the list of symbols can be computed at run-time."
(,binds ()))
(while ,syms
(push (list (pop ,syms) (list 'quote (pop ,vals))) ,binds))
- (eval (list 'let ,binds (list 'funcall (list 'quote ,bodyfun))))))))
+ (eval (list 'let (nreverse ,binds)
+ (list 'funcall (list 'quote ,bodyfun))))))))
(defconst cl--labels-magic (make-symbol "cl--labels-magic"))
diff --git a/test/lisp/emacs-lisp/cl-macs-tests.el b/test/lisp/emacs-lisp/cl-macs-tests.el
index df1d26a074e..dd6487603d3 100644
--- a/test/lisp/emacs-lisp/cl-macs-tests.el
+++ b/test/lisp/emacs-lisp/cl-macs-tests.el
@@ -648,4 +648,9 @@ collection clause."
#'len))
(`(function (lambda (,_ ,_) . ,_)) t))))
+(ert-deftest cl-macs--progv ()
+ (should (= (cl-progv '(test test) '(1 2) test) 2))
+ (should (equal (cl-progv '(test1 test2) '(1 2) (list test1 test2))
+ '(1 2))))
+
;;; cl-macs-tests.el ends here