]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix &key parameters called without arguments (bug#58714)
authorGerd Möllmann <gerd@gnu.org>
Sun, 23 Oct 2022 08:14:10 +0000 (10:14 +0200)
committerGerd Möllmann <gerd@gnu.org>
Sun, 23 Oct 2022 08:14:10 +0000 (10:14 +0200)
* 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.

lisp/emacs-lisp/cl-macs.el
test/lisp/emacs-lisp/cl-macs-tests.el

index beafee1d631fec98465d64741a18f643d33a9205..43a2ed920595ec03d73d4910784bd7037757b8c7 100644 (file)
@@ -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))
index f742637ee35c8421fed17e2d2075e4e39007c818..160ac59113003e4bd2afda718438a75c02fba4d1 100644 (file)
@@ -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