Minor bytecomp.el fixes
authorDaniel Colascione <dancol@dancol.org>
Tue, 22 Apr 2014 06:51:30 +0000 (23:51 -0700)
committerDaniel Colascione <dancol@dancol.org>
Tue, 22 Apr 2014 06:51:30 +0000 (23:51 -0700)
* lisp/emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
Use lambda function values, not quoted lambdas.
(byte-compile-recurse-toplevel): Remove extraneous &optional.

lisp/ChangeLog
lisp/emacs-lisp/bytecomp.el

index c4b1c05..38871c7 100644 (file)
@@ -1,7 +1,11 @@
 2014-04-22  Daniel Colascione  <dancol@dancol.org>
 
+       * emacs-lisp/bytecomp.el (byte-compile-initial-macro-environment):
+       Use lambda function values, not quoted lambdas.
+       (byte-compile-recurse-toplevel): Remove extraneous &optional.
+
        * emacs-lisp/cl-macs.el
-       (cl-struct-sequence-type,cl-struct-slot-info): Declare pure.
+       (cl-struct-sequence-type, cl-struct-slot-info): Declare pure.
        (cl-struct-slot-value): Conditionally use aref or nth so that the
        compiler produces optimal code.
 
index 923d206..9c52cc4 100644 (file)
@@ -421,7 +421,7 @@ Filled in `cconv-analyse-form' but initialized and consulted here.")
 
 (defvar byte-compiler-error-flag)
 
-(defun byte-compile-recurse-toplevel (form &optional non-toplevel-case)
+(defun byte-compile-recurse-toplevel (form non-toplevel-case)
   "Implement `eval-when-compile' and `eval-and-compile'.
 Return the compile-time value of FORM."
   ;; Macroexpand (not macroexpand-all!) form at toplevel in case it
@@ -439,28 +439,28 @@ Return the compile-time value of FORM."
     (funcall non-toplevel-case form)))
 
 (defconst byte-compile-initial-macro-environment
-  '(
+  `(
     ;; (byte-compiler-options . (lambda (&rest forms)
     ;;                        (apply 'byte-compiler-options-handler forms)))
     (declare-function . byte-compile-macroexpand-declare-function)
-    (eval-when-compile . (lambda (&rest body)
-                           (let ((result nil))
-                             (byte-compile-recurse-toplevel
-                              (cons 'progn body)
-                              (lambda (form)
-                                (setf result
-                                      (byte-compile-eval
-                                       (byte-compile-top-level
-                                        (byte-compile-preprocess form))))))
-                             (list 'quote result))))
-    (eval-and-compile . (lambda (&rest body)
-                          (byte-compile-recurse-toplevel
-                           (cons 'progn body)
-                           (lambda (form)
-                             (let ((compiled (byte-compile-top-level
-                                              (byte-compile-preprocess form))))
-                               (eval compiled)
-                               compiled))))))
+    (eval-when-compile . ,(lambda (&rest body)
+                                  (let ((result nil))
+                                    (byte-compile-recurse-toplevel
+                                     (cons 'progn body)
+                                     (lambda (form)
+                                       (setf result
+                                             (byte-compile-eval
+                                              (byte-compile-top-level
+                                               (byte-compile-preprocess form))))))
+                                    (list 'quote result))))
+    (eval-and-compile . ,(lambda (&rest body)
+                                 (byte-compile-recurse-toplevel
+                                  (cons 'progn body)
+                                  (lambda (form)
+                                    (let ((compiled (byte-compile-top-level
+                                                     (byte-compile-preprocess form))))
+                                      (eval compiled lexical-binding)
+                                      compiled))))))
   "The default macro-environment passed to macroexpand by the compiler.
 Placing a macro here will cause a macro to have different semantics when
 expanded by the compiler as when expanded by the interpreter.")