mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-06 06:20:55 -08:00
cl-defun/cl-struct: Use static scoping for function args
* lisp/emacs-lisp/cl-macs.el (cl--slet*): New function. (cl--transform-lambda): Use it to fix bug#47552. * test/lisp/emacs-lisp/cl-macs-tests.el (cl-&key-arguments): Add test.
This commit is contained in:
parent
01ce70cea9
commit
37a09a4c00
2 changed files with 27 additions and 5 deletions
|
|
@ -806,7 +806,15 @@ See Bug#57915."
|
|||
(ert-deftest cl-&key-arguments ()
|
||||
(cl-flet ((fn (&key x) x))
|
||||
(should-error (fn :x))
|
||||
(should (eq (fn :x :a) :a))))
|
||||
(should (eq (fn :x :a) :a)))
|
||||
;; In ELisp function arguments are always statically scoped (bug#47552).
|
||||
(defvar cl--test-a)
|
||||
(let ((cl--test-a 'dyn)
|
||||
;; FIXME: How do we silence the "Lexical argument shadows" warning?
|
||||
(f (cl-function (lambda (&key cl--test-a b)
|
||||
(list cl--test-a (symbol-value 'cl--test-a) b)))))
|
||||
(should (equal (funcall f :cl--test-a 'lex :b 2) '(lex dyn 2)))))
|
||||
|
||||
|
||||
|
||||
;;; cl-macs-tests.el ends here
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue