diff options
author | Philipp Stephani <phst@google.com> | 2020-06-14 18:18:13 +0200 |
---|---|---|
committer | Philipp Stephani <phst@google.com> | 2020-06-14 18:18:13 +0200 |
commit | 62cf8f1649468fc2f6c4f8926ab5c4bb184bfbe8 (patch) | |
tree | 8d5f6bf7b9d21548712f3638ebe895a36424be54 /test/lisp/emacs-lisp/gv-tests.el | |
parent | b3e7d046c3a94556fcaf6f9ce72aa2ecb20262a6 (diff) | |
download | emacs-62cf8f1649468fc2f6c4f8926ab5c4bb184bfbe8.tar.gz emacs-62cf8f1649468fc2f6c4f8926ab5c4bb184bfbe8.tar.bz2 emacs-62cf8f1649468fc2f6c4f8926ab5c4bb184bfbe8.zip |
Ensure that getters and setters can be edebugged at the same time.
It's necessary to add a name suffix to setters defined with
'gv-define-setter' so that Edebug can distinguish between the getter
and the setter (Bug#41853).
* lisp/emacs-lisp/gv.el (gv-define-setter): Add a name suffix to
setter definitions.
* test/lisp/emacs-lisp/gv-tests.el (gv-setter-edebug): New regression
test.
Diffstat (limited to 'test/lisp/emacs-lisp/gv-tests.el')
-rw-r--r-- | test/lisp/emacs-lisp/gv-tests.el | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/test/lisp/emacs-lisp/gv-tests.el b/test/lisp/emacs-lisp/gv-tests.el index 7fa4cd50b08..7a8402be074 100644 --- a/test/lisp/emacs-lisp/gv-tests.el +++ b/test/lisp/emacs-lisp/gv-tests.el @@ -19,6 +19,7 @@ ;;; Code: +(require 'edebug) (require 'ert) (eval-when-compile (require 'cl-lib)) @@ -137,6 +138,24 @@ (should (equal (buffer-string) "Symbol's function definition is void: \\(setf\\ gv-test-foo\\)\n"))))) +(ert-deftest gv-setter-edebug () + "Check that a setter can be defined and edebugged together with +its getter (Bug#41853)." + (with-temp-buffer + (let ((edebug-all-defs t) + (edebug-initial-mode 'Go-nonstop)) + (dolist (form '((defun gv-setter-edebug-help (b) b) + (defun gv-setter-edebug-get (a b) + (get a (gv-setter-edebug-help b))) + (gv-define-setter gv-setter-edebug-get (x a b) + `(setf (get ,a (gv-setter-edebug-help ,b)) ,x)) + (push 123 (gv-setter-edebug-get 'gv-setter-edebug + 'gv-setter-edebug-prop)))) + (print form (current-buffer))) + ;; Only check whether evaluation works in general. + (eval-buffer))) + (should (equal (get 'gv-setter-edebug 'gv-setter-edebug-prop) '(123)))) + ;; `ert-deftest' messes up macroexpansion when the test file itself is ;; compiled (see Bug #24402). |