* lisp/emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):

Don't macroexpand before evaluating in eval-and-compile, in case
`body's macro expansion uses macros and functions defined in itself.

* src/bytecode.c (exec_byte_code):
* src/eval.c (Ffunctionp): Fix up int/Lisp_Object confusions.
This commit is contained in:
Stefan Monnier 2010-06-14 22:51:25 -04:00
parent f43cb64908
commit 3c3ddb9833
5 changed files with 15 additions and 10 deletions

View file

@ -479,10 +479,7 @@ This list lives partly on the stack.")
(cons 'progn body)
byte-compile-initial-macro-environment))))))
(eval-and-compile . (lambda (&rest body)
(byte-compile-eval-before-compile
(macroexpand-all
(cons 'progn body)
byte-compile-initial-macro-environment))
(byte-compile-eval-before-compile (cons 'progn body))
(cons 'progn body))))
"The default macro-environment passed to macroexpand by the compiler.
Placing a macro here will cause a macro to have different semantics when