]> git.eshelyaron.com Git - emacs.git/commitdiff
* lisp/emacs-lisp/byte-run.el (eval-when-compile, eval-and-compile):
authorStefan Monnier <monnier@iro.umontreal.ca>
Fri, 8 Feb 2013 16:17:18 +0000 (11:17 -0500)
committerStefan Monnier <monnier@iro.umontreal.ca>
Fri, 8 Feb 2013 16:17:18 +0000 (11:17 -0500)
Eval body right away, now that we do eager macroexpansion.

Fixes: debbugs:13605
lisp/ChangeLog
lisp/emacs-lisp/byte-run.el

index 94ff282d58c5c1664ac755fc61070aa95383488e..3dea3ed03803cf5cb43fc201df9a6c1af473ea5b 100644 (file)
@@ -1,5 +1,8 @@
 2013-02-08  Stefan Monnier  <monnier@iro.umontreal.ca>
 
+       * emacs-lisp/byte-run.el (eval-when-compile, eval-and-compile):
+       Eval body right away, now that we do eager macroexpansion (bug#13605).
+
        * simple.el (end-of-buffer): Don't touch unrelated windows (bug#13466).
        (fundamental-mode): Use run-mode-hooks.
 
index b44ec68e2bf4fdc3d07d782d04b94aa18171a7d3..48bcefaee1a56a9c94e4b82387fda2f9dae0fbd1 100644 (file)
@@ -392,15 +392,15 @@ If you think you need this, you're probably making a mistake somewhere."
 Thus, the result of the body appears to the compiler as a quoted constant.
 In interpreted code, this is entirely equivalent to `progn'."
   (declare (debug t) (indent 0))
-  ;; Not necessary because we have it in b-c-initial-macro-environment
-  ;; (list 'quote (eval (cons 'progn body)))
-  (cons 'progn body))
+  (list 'quote (eval (cons 'progn body) lexical-binding)))
 
 (defmacro eval-and-compile (&rest body)
   "Like `progn', but evaluates the body at compile time and at load time."
   (declare (debug t) (indent 0))
-  ;; Remember, it's magic.
-  (cons 'progn body))
+  ;; When the byte-compiler expands code, this macro is not used, so we're
+  ;; either about to run `body' (plain interpretation) or we're doing eager
+  ;; macroexpansion.
+  (list 'quote (eval (cons 'progn body) lexical-binding)))
 
 (put 'with-no-warnings 'lisp-indent-function 0)
 (defun with-no-warnings (&rest body)