Correctly macroexpand top-level forms during eager macroexpand
authorDaniel Colascione <dancol@dancol.org>
Tue, 22 Apr 2014 07:04:34 +0000 (00:04 -0700)
committerDaniel Colascione <dancol@dancol.org>
Tue, 22 Apr 2014 07:04:34 +0000 (00:04 -0700)
commit12b1389c9039dd374951673ca43b1ddf65df400d
treef4d36afc9d1ccdd72f3d801b350d79d25dd5e8bb
parentc98212f9e7cef496dded06eba4476033062c171f
Correctly macroexpand top-level forms during eager macroexpand

* lisp/emacs-lisp/byte-run.el (eval-when-compile, eval-and-compile):
Improve docstrings.

* lisp/emacs-lisp/macroexp.el (internal-macroexpand-for-load): Add
`full-p' parameter; when nil, call `macroexpand' instead of
`macroexpand-all'.

* src/lread.c (readevalloop_eager_expand_eval): New function
that can recurse into toplevel forms.
(readevalloop): Call it.
* src/lisp.h: Declare Qprogn.
* src/callint.c (Qprogn): No longer static.

* test/automated/bytecomp-tests.el (test-byte-comp-compile-and-load):
Add compile flag.
(test-byte-comp-macro-expansion)
(test-byte-comp-macro-expansion-eval-and-compile)
(test-byte-comp-macro-expansion-eval-when-compile)
(test-byte-comp-macro-expand-lexical-override): Use it.
(test-eager-load-macro-expansion)
(test-eager-load-macro-expansion-eval-and-compile)
(test-eager-load-macro-expansion-eval-when-compile)
(test-eager-load-macro-expand-lexical-override): New tests.
lisp/ChangeLog
lisp/emacs-lisp/byte-run.el
lisp/emacs-lisp/macroexp.el
src/ChangeLog
src/callint.c
src/lisp.h
src/lread.c
test/ChangeLog
test/automated/bytecomp-tests.el