Don't define gv expanders in compiler's runtime (Bug#27016)
This prevents definitions being compiled from leaking into the current Emacs doing the compilation. * lisp/emacs-lisp/gv.el (gv-define-expander): Use function-put instead of `put' with `eval-and-compile'. * test/lisp/emacs-lisp/gv-tests.el: New tests.
This commit is contained in:
parent
b5c8e9898d
commit
79a74568e9
2 changed files with 148 additions and 6 deletions
|
@ -146,12 +146,7 @@ NAME is a symbol: the name of a function, macro, or special form.
|
|||
HANDLER is a function which takes an argument DO followed by the same
|
||||
arguments as NAME. DO is a function as defined in `gv-get'."
|
||||
(declare (indent 1) (debug (sexp form)))
|
||||
;; Use eval-and-compile so the method can be used in the same file as it
|
||||
;; is defined.
|
||||
;; FIXME: Just like byte-compile-macro-environment, we should have something
|
||||
;; like byte-compile-symbolprop-environment so as to handle these things
|
||||
;; cleanly without affecting the running Emacs.
|
||||
`(eval-and-compile (put ',name 'gv-expander ,handler)))
|
||||
`(function-put ',name 'gv-expander ,handler))
|
||||
|
||||
;;;###autoload
|
||||
(defun gv--defun-declaration (symbol name args handler &optional fix)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue