diff options
author | Gerd Möllmann <gerd@gnu.org> | 2022-10-23 10:14:10 +0200 |
---|---|---|
committer | Stefan Kangas <stefankangas@gmail.com> | 2022-11-11 14:13:46 +0100 |
commit | 6d9065b7487f35297994117bb1144f46ffa45313 (patch) | |
tree | 303d1aca8b4a0210d0140331d3c7c0d5bfb6da88 | |
parent | c64d94c84979425665b9ca88c1cad5830d2fabe0 (diff) | |
download | emacs-6d9065b7487f35297994117bb1144f46ffa45313.tar.gz |
Fix &key parameters called without arguments (bug#58714)
* lisp/emacs-lisp/cl-macs.el (cl--do-arglist): Check for missing
argument.
* test/lisp/emacs-lisp/cl-macs-tests.el (cl-&key-arguments): New test.
-rw-r--r-- | lisp/emacs-lisp/cl-macs.el | 2 | ||||
-rw-r--r-- | test/lisp/emacs-lisp/cl-macs-tests.el | 6 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el index beafee1d631..43a2ed92059 100644 --- a/lisp/emacs-lisp/cl-macs.el +++ b/lisp/emacs-lisp/cl-macs.el @@ -656,6 +656,8 @@ its argument list allows full Common Lisp conventions." (check `(while ,var (cond ((memq (car ,var) ',(append keys allow)) + (unless (cdr ,var) + (error "Missing argument for %s" (car ,var))) (setq ,var (cdr (cdr ,var)))) ((car (cdr (memq (quote ,@allow) ,restarg))) (setq ,var nil)) diff --git a/test/lisp/emacs-lisp/cl-macs-tests.el b/test/lisp/emacs-lisp/cl-macs-tests.el index f742637ee35..160ac591130 100644 --- a/test/lisp/emacs-lisp/cl-macs-tests.el +++ b/test/lisp/emacs-lisp/cl-macs-tests.el @@ -803,4 +803,10 @@ See Bug#57915." (macroexpand form) (should (string-empty-p messages)))))))) +(ert-deftest cl-&key-arguments () + (cl-flet ((fn (&key x) x)) + (should-error (fn :x)) + (should (eq (fn :x :a) :a)))) + + ;;; cl-macs-tests.el ends here |