]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
authorStefan Monnier <monnier@iro.umontreal.ca>
Tue, 15 Jun 2010 02:51:25 +0000 (22:51 -0400)
committerStefan Monnier <monnier@iro.umontreal.ca>
Tue, 15 Jun 2010 02:51:25 +0000 (22:51 -0400)
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.

lisp/ChangeLog
lisp/emacs-lisp/bytecomp.el
src/ChangeLog
src/bytecode.c
src/eval.c

index af456bd5d2e13a1505e00fa71c305772ee1b15e3..856d4ea389836aaafcdc7ac8cacf8d27d4b552fd 100644 (file)
@@ -1,3 +1,9 @@
+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):
index 490d928c5a03b5976ba6c5a68b8290cedf6e3146..df93528683c17f260f08d2bca5b648c2fe1066c2 100644 (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
index 3e6c8f243984f3e647b3272dbc7f42012e15e141..017b3eb2553d81b3388a90acea515ade4260f684 100644 (file)
@@ -1,3 +1,8 @@
+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
index fec855c0b83faf4e0cb0b201a50ca9566a6c74b1..192d397c45f38a5e0885eea07911a01878c08141 100644 (file)
@@ -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]);
index 875b4498a61b4c1eb7a54261fc95f0f3563f0005..71a0b1118494d1b60c60c82f73321d6e07a8b67e 100644 (file)
@@ -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);