Make edebug-step-in work on generic methods (Bug#22294)
* lisp/emacs-lisp/edebug.el (edebug-match-cl-generic-method-args): New function to implement the edebug-form-spec property of the symbol cl-generic-method-args. (edebug-instrument-function): If the function is a generic function, find and instrument all of its methods. Return a list instead of a single symbol. (edebug-instrument-callee): Now returns a list. Update docstring. (edebug-step-in): Handle the list returned by edebug-instrument-callee. * lisp/emacs-lisp/cl-generic.el (cl-defmethod): Use name and cl-generic-method-args in its Edebug spec. * lisp/emacs-lisp/eieio-compat.el (defmethod): Use name and cl-generic-method-args in its Edebug spec. * lisp/subr.el (method-files): New function. * test/lisp/subr-tests.el (subr-tests--method-files--finds-methods) (subr-tests--method-files--nonexistent-methods): New tests.
This commit is contained in:
parent
10037e4be2
commit
e6f64df9c2
5 changed files with 89 additions and 15 deletions
|
@ -413,12 +413,12 @@ The set of acceptable TYPEs (also called \"specializers\") is defined
|
|||
(declare (doc-string 3) (indent 2)
|
||||
(debug
|
||||
(&define ; this means we are defining something
|
||||
[&or symbolp ("setf" symbolp)]
|
||||
[&or name ("setf" name :name setf)]
|
||||
;; ^^ This is the methods symbol
|
||||
[ &rest atom ] ; Multiple qualifiers are allowed.
|
||||
; Like in CLOS spec, we support
|
||||
; any non-list values.
|
||||
listp ; arguments
|
||||
cl-generic-method-args ; arguments
|
||||
[ &optional stringp ] ; documentation string
|
||||
def-body))) ; part to be debugged
|
||||
(let ((qualifiers nil))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue