1
0
mirror of https://git.savannah.gnu.org/git/emacs.git synced 2024-12-16 09:50:25 +00:00

Improve Edebug symbols for inlined secondary methods (Bug#42671)

* lisp/emacs-lisp/cl-generic.el (cl-defgeneric): Include qualifiers in
Edebug symbol name.

* test/lisp/emacs-lisp/cl-generic-tests.el
(cl-defgeneric/edebug/method): Adapt unit test.
This commit is contained in:
Philipp Stephani 2020-08-02 22:07:27 +02:00
parent 2ad38b4745
commit a325584281
2 changed files with 16 additions and 14 deletions

View File

@ -220,7 +220,7 @@ DEFAULT-BODY, if present, is used as the body of a default method.
;; requires larger changes to
;; Edebug.
:unique "cl-generic-:method@"
[&rest atom]
[&rest cl-generic-method-qualifier]
cl-generic-method-args lambda-doc
def-body)]]
def-body)))

View File

@ -256,7 +256,8 @@ Edebug symbols (Bug#42672)."
(with-temp-buffer
(dolist (form '((cl-defgeneric cl-defgeneric/edebug/method/1 (_)
(:method ((_ number)) 1)
(:method ((_ string)) 2))
(:method ((_ string)) 2)
(:method :around ((_ number)) 3))
(cl-defgeneric cl-defgeneric/edebug/method/2 (_)
(:method ((_ number)) 3))))
(print form (current-buffer)))
@ -272,18 +273,19 @@ Edebug symbols (Bug#42672)."
;; Make generated symbols reproducible.
(gensym-counter 10000))
(eval-buffer)
(should (equal (reverse instrumented-names)
;; The generic function definitions come after
;; the method definitions because their body ends
;; later.
;; FIXME: We'd rather have names such as
;; `cl-defgeneric/edebug/method/1 ((_ number))',
;; but that requires further changes to Edebug.
(list (intern "cl-generic-:method@10000 ((_ number))")
(intern "cl-generic-:method@10001 ((_ string))")
'cl-defgeneric/edebug/method/1
(intern "cl-generic-:method@10002 ((_ number))")
'cl-defgeneric/edebug/method/2))))))
(should (equal
(reverse instrumented-names)
;; The generic function definitions come after the
;; method definitions because their body ends later.
;; FIXME: We'd rather have names such as
;; `cl-defgeneric/edebug/method/1 ((_ number))', but
;; that requires further changes to Edebug.
(list (intern "cl-generic-:method@10000 ((_ number))")
(intern "cl-generic-:method@10001 ((_ string))")
(intern "cl-generic-:method@10002 :around ((_ number))")
'cl-defgeneric/edebug/method/1
(intern "cl-generic-:method@10003 ((_ number))")
'cl-defgeneric/edebug/method/2))))))
(provide 'cl-generic-tests)
;;; cl-generic-tests.el ends here