diff options
| -rw-r--r-- | lisp/emacs-lisp/gv.el | 2 | ||||
| -rw-r--r-- | test/lisp/emacs-lisp/gv-tests.el | 19 |
2 files changed, 20 insertions, 1 deletions
diff --git a/lisp/emacs-lisp/gv.el b/lisp/emacs-lisp/gv.el index 096036a0ffa..513bd328899 100644 --- a/lisp/emacs-lisp/gv.el +++ b/lisp/emacs-lisp/gv.el | |||
| @@ -224,7 +224,7 @@ The first arg in ARGLIST (the one that receives VAL) receives an expression | |||
| 224 | which can do arbitrary things, whereas the other arguments are all guaranteed | 224 | which can do arbitrary things, whereas the other arguments are all guaranteed |
| 225 | to be pure and copyable. Example use: | 225 | to be pure and copyable. Example use: |
| 226 | (gv-define-setter aref (v a i) \\=`(aset ,a ,i ,v))" | 226 | (gv-define-setter aref (v a i) \\=`(aset ,a ,i ,v))" |
| 227 | (declare (indent 2) (debug (&define name sexp def-body))) | 227 | (declare (indent 2) (debug (&define name :name gv-setter sexp def-body))) |
| 228 | `(gv-define-expander ,name | 228 | `(gv-define-expander ,name |
| 229 | (lambda (do &rest args) | 229 | (lambda (do &rest args) |
| 230 | (declare-function | 230 | (declare-function |
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 | ||