diff options
| author | Philipp Stephani | 2020-06-14 18:18:13 +0200 |
|---|---|---|
| committer | Philipp Stephani | 2020-06-14 18:18:13 +0200 |
| commit | 62cf8f1649468fc2f6c4f8926ab5c4bb184bfbe8 (patch) | |
| tree | 8d5f6bf7b9d21548712f3638ebe895a36424be54 /test | |
| parent | b3e7d046c3a94556fcaf6f9ce72aa2ecb20262a6 (diff) | |
| download | emacs-62cf8f1649468fc2f6c4f8926ab5c4bb184bfbe8.tar.gz 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')
| -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 @@ | |||
| 19 | 19 | ||
| 20 | ;;; Code: | 20 | ;;; Code: |
| 21 | 21 | ||
| 22 | (require 'edebug) | ||
| 22 | (require 'ert) | 23 | (require 'ert) |
| 23 | (eval-when-compile (require 'cl-lib)) | 24 | (eval-when-compile (require 'cl-lib)) |
| 24 | 25 | ||
| @@ -137,6 +138,24 @@ | |||
| 137 | (should (equal (buffer-string) | 138 | (should (equal (buffer-string) |
| 138 | "Symbol's function definition is void: \\(setf\\ gv-test-foo\\)\n"))))) | 139 | "Symbol's function definition is void: \\(setf\\ gv-test-foo\\)\n"))))) |
| 139 | 140 | ||
| 141 | (ert-deftest gv-setter-edebug () | ||
| 142 | "Check that a setter can be defined and edebugged together with | ||
| 143 | its getter (Bug#41853)." | ||
| 144 | (with-temp-buffer | ||
| 145 | (let ((edebug-all-defs t) | ||
| 146 | (edebug-initial-mode 'Go-nonstop)) | ||
| 147 | (dolist (form '((defun gv-setter-edebug-help (b) b) | ||
| 148 | (defun gv-setter-edebug-get (a b) | ||
| 149 | (get a (gv-setter-edebug-help b))) | ||
| 150 | (gv-define-setter gv-setter-edebug-get (x a b) | ||
| 151 | `(setf (get ,a (gv-setter-edebug-help ,b)) ,x)) | ||
| 152 | (push 123 (gv-setter-edebug-get 'gv-setter-edebug | ||
| 153 | 'gv-setter-edebug-prop)))) | ||
| 154 | (print form (current-buffer))) | ||
| 155 | ;; Only check whether evaluation works in general. | ||
| 156 | (eval-buffer))) | ||
| 157 | (should (equal (get 'gv-setter-edebug 'gv-setter-edebug-prop) '(123)))) | ||
| 158 | |||
| 140 | ;; `ert-deftest' messes up macroexpansion when the test file itself is | 159 | ;; `ert-deftest' messes up macroexpansion when the test file itself is |
| 141 | ;; compiled (see Bug #24402). | 160 | ;; compiled (see Bug #24402). |
| 142 | 161 | ||