Commit 3c3ddb98 authored by Stefan Monnier's avatar Stefan Monnier
Browse files

* 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.
parent f43cb649
2010-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
* 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.
2010-06-14 Stefan Monnier <monnier@iro.umontreal.ca>
 
* emacs-lisp/bytecomp.el (byte-compile-check-variable):
......
......@@ -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
......
2010-06-15 Stefan Monnier <monnier@iro.umontreal.ca>
* bytecode.c (exec_byte_code):
* eval.c (Ffunctionp): Fix up int/Lisp_Object confusions.
2010-06-12 Eli Zaretskii <eliz@gnu.org>
 
* makefile.w32-in ($(BLD)/bidi.$(O)): Depend on biditype.h and
......
......@@ -1742,7 +1742,7 @@ exec_byte_code (bytestr, vector, maxdepth, args_template, nargs, args)
if (! VECTORP (vec))
wrong_type_argument (Qvectorp, vec);
else if (index < 0 || index >= XVECTOR (vec)->size)
args_out_of_range (vec, index);
args_out_of_range (vec, make_number (index));
if (op == Bvec_ref)
PUSH (XVECTOR (vec)->contents[index]);
......
......@@ -62,7 +62,7 @@ Lisp_Object Qinhibit_quit, Vinhibit_quit, Vquit_flag;
Lisp_Object Qand_rest, Qand_optional;
Lisp_Object Qdebug_on_error;
Lisp_Object Qdeclare;
Lisp_Object Qcurry, Qunevalled;
Lisp_Object Qcurry;
Lisp_Object Qinternal_interpreter_environment, Qclosure;
Lisp_Object Qdebug;
......@@ -3109,7 +3109,7 @@ DEFUN ("functionp", Ffunctionp, Sfunctionp, 1, 1, 0,
}
if (SUBRP (object))
return (XSUBR (object)->max_args != Qunevalled) ? Qt : Qnil;
return (XSUBR (object)->max_args != UNEVALLED) ? Qt : Qnil;
else if (FUNVECP (object))
return Qt;
else if (CONSP (object))
......@@ -4002,9 +4002,6 @@ before making `inhibit-quit' nil. */);
Qcurry = intern_c_string ("curry");
staticpro (&Qcurry);
Qunevalled = intern_c_string ("unevalled");
staticpro (&Qunevalled);
Qdebug = intern_c_string ("debug");
staticpro (&Qdebug);
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment