bug-gnu-emacs
[Top][All Lists]
Advanced

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

bug#27747: 26.0.50; cl-defgeneric does not have an Edebug spec


From: Gemini Lasswell
Subject: bug#27747: 26.0.50; cl-defgeneric does not have an Edebug spec
Date: Mon, 23 Oct 2017 10:52:41 -0700
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/26.0.90 (gnu/linux)

Here's a revision to the cl-defgeneric Edebug spec, because I missed
this case:

(cl-defgeneric (setf foo) (v args))

which isn't documented but lets you create a generalized variable.

Also, the Edebug spec for cl-lambda-list isn't necessarily loaded and
isn't correct for cl-defgeneric anyway. Since there isn't any code for
Edebug to instrument inside the argument list, it can just be matched
with listp.

To reproduce these problems, start with emacs -Q and load
test/lisp/emacs-lisp/cl-generic-tests.el, then use edebug-all-defs and
eval-buffer.

>From 912942457d93850b2d444cf25cf7e71e79259357 Mon Sep 17 00:00:00 2001
From: Gemini Lasswell <gazally@runbox.com>
Date: Mon, 23 Oct 2017 10:13:00 -0700
Subject: [PATCH] Handle generic variables in cl-defgeneric Edebug spec

*lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Match (setf name)
and replace incorrect cl-lambda-args with listp in Edebug spec.
---
 lisp/emacs-lisp/cl-generic.el | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/lisp/emacs-lisp/cl-generic.el b/lisp/emacs-lisp/cl-generic.el
index 62befd4742..0027899679 100644
--- a/lisp/emacs-lisp/cl-generic.el
+++ b/lisp/emacs-lisp/cl-generic.el
@@ -206,7 +206,8 @@ cl-defgeneric
 \(fn NAME ARGS [DOC-STRING] [OPTIONS-AND-METHODS...] &rest DEFAULT-BODY)"
   (declare (indent 2) (doc-string 3)
            (debug
-            (&define name cl-lambda-list lambda-doc
+            (&define [&or name ("setf" name :name setf)] listp
+                     lambda-doc
                      [&rest [&or
                              ("declare" &rest sexp)
                              (":argument-precedence-order" &rest sexp)
-- 
2.14.2


reply via email to

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