emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master 6d9065b748: Fix &key parameters called without arguments (bug#587


From: Stefan Kangas
Subject: master 6d9065b748: Fix &key parameters called without arguments (bug#58714)
Date: Fri, 11 Nov 2022 08:35:08 -0500 (EST)

branch: master
commit 6d9065b7487f35297994117bb1144f46ffa45313
Author: Gerd Möllmann <gerd@gnu.org>
Commit: Stefan Kangas <stefankangas@gmail.com>

    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.
---
 lisp/emacs-lisp/cl-macs.el            | 2 ++
 test/lisp/emacs-lisp/cl-macs-tests.el | 6 ++++++
 2 files changed, 8 insertions(+)

diff --git a/lisp/emacs-lisp/cl-macs.el b/lisp/emacs-lisp/cl-macs.el
index beafee1d63..43a2ed9205 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 f742637ee3..160ac59113 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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]