diff options
author | Mattias EngdegÄrd <mattiase@acm.org> | 2021-12-11 21:39:19 +0100 |
---|---|---|
committer | Mattias EngdegÄrd <mattiase@acm.org> | 2021-12-20 16:26:02 +0100 |
commit | 8706f6fde13729bf330693cfd163773583e526a9 (patch) | |
tree | 16b7674aa4c7604d6b5b5f96a40e840ecc2fd1f0 /test/lisp/emacs-lisp/lisp-mnt-tests.el | |
parent | 3259f399d46dabff5e0a87169d3d3455729d8681 (diff) | |
download | emacs-8706f6fde13729bf330693cfd163773583e526a9.tar.gz emacs-8706f6fde13729bf330693cfd163773583e526a9.tar.bz2 emacs-8706f6fde13729bf330693cfd163773583e526a9.zip |
Add `macroexp--dynamic-variable-p`
This predicate can be used for discriminating between lexically and
dynamically bound variables during macro-expansion (only).
It is restricted to internal use for the time being.
* lisp/emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
Use macroexpand--all-toplevel.
* lisp/emacs-lisp/macroexp.el (macroexp-dynamic-variable-p): New.
(macroexp--expand-all): Maintain macroexp--dynvars.
(macroexpand-all): Rebind macroexp--dynvars.
(macroexpand--all-toplevel): New.
(internal-macroexpand-for-load): Use macroexpand--all-toplevel.
* src/eval.c (eval_sub): Transfer defvar declarations from
Vinternal_interpreter_environment into macroexp--dynvars during
lazy macro-expansion.
* src/lread.c (readevalloop): Rebind macroexp--dynvars around
read-and-evaluate operations.
(syms_of_lread): Define macroexp--dynvars.
* test/lisp/emacs-lisp/macroexp-resources/vk.el: New file.
* test/lisp/emacs-lisp/macroexp-tests.el (macroexp-tests--run-emacs)
(macroexp-tests--eval-in-subprocess)
(macroexp-tests--byte-compile-in-subprocess)
(macroexp--tests-dynamic-variable-p): Add tests.
Diffstat (limited to 'test/lisp/emacs-lisp/lisp-mnt-tests.el')
0 files changed, 0 insertions, 0 deletions