all messages for Emacs-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* bug#27747: 26.0.50; cl-defgeneric does not have an Edebug spec
@ 2017-07-18  5:06 Gemini Lasswell
  2017-10-06 18:39 ` Gemini Lasswell
  2017-10-23 17:52 ` Gemini Lasswell
  0 siblings, 2 replies; 3+ messages in thread
From: Gemini Lasswell @ 2017-07-18  5:06 UTC (permalink / raw)
  To: 27747

There is no Edebug spec for cl-defgeneric, which means that default
method implementations and methods defined using its :method keyword
can't be Edebugged.

To reproduce the problem, start with this bit of code in a buffer:

(cl-defgeneric my-say (obj)
  "Say something about OBJ."
  (message "See the %s!" obj))

(cl-defmethod my-say ((obj number))
  (message "See the number %s!" obj))

Then:

M-x edebug-all-defs RET
M-x eval-buffer RET
M-: (my-say "cat") RET

Result: the command completes without Edebug starting.
This works correctly:

M-: (my-say 3) RET





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#27747: 26.0.50; cl-defgeneric does not have an Edebug spec
  2017-07-18  5:06 bug#27747: 26.0.50; cl-defgeneric does not have an Edebug spec Gemini Lasswell
@ 2017-10-06 18:39 ` Gemini Lasswell
  2017-10-23 17:52 ` Gemini Lasswell
  1 sibling, 0 replies; 3+ messages in thread
From: Gemini Lasswell @ 2017-10-06 18:39 UTC (permalink / raw)
  To: 27747-done

This is fixed by the patch for bug#24773, just pushed to emacs-26.





^ permalink raw reply	[flat|nested] 3+ messages in thread

* bug#27747: 26.0.50; cl-defgeneric does not have an Edebug spec
  2017-07-18  5:06 bug#27747: 26.0.50; cl-defgeneric does not have an Edebug spec Gemini Lasswell
  2017-10-06 18:39 ` Gemini Lasswell
@ 2017-10-23 17:52 ` Gemini Lasswell
  1 sibling, 0 replies; 3+ messages in thread
From: Gemini Lasswell @ 2017-10-23 17:52 UTC (permalink / raw)
  To: 27747

[-- Attachment #1: Type: text/plain, Size: 553 bytes --]

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.


[-- Attachment #2: 0001-Handle-generic-variables-in-cl-defgeneric-Edebug-spe.patch --]
[-- Type: text/plain, Size: 1116 bytes --]

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


^ permalink raw reply related	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2017-10-23 17:52 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-07-18  5:06 bug#27747: 26.0.50; cl-defgeneric does not have an Edebug spec Gemini Lasswell
2017-10-06 18:39 ` Gemini Lasswell
2017-10-23 17:52 ` Gemini Lasswell

Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/emacs.git
	https://git.savannah.gnu.org/cgit/emacs/org-mode.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.