• Daniel Colascione's avatar
    Correctly macroexpand top-level forms during eager macroexpand · 12b1389c
    Daniel Colascione authored
    * 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.
    12b1389c
callint.c 29.6 KB