emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

emacs-27 cc340da: Fix bug #41618 "(byte-compile 'foo) errors when foo is


From: Alan Mackenzie
Subject: emacs-27 cc340da: Fix bug #41618 "(byte-compile 'foo) errors when foo is a macro."
Date: Sun, 31 May 2020 12:48:35 -0400 (EDT)

branch: emacs-27
commit cc340da1fe853dc52c894d6660384e09bb9a9302
Author: Alan Mackenzie <acm@muc.de>
Commit: Alan Mackenzie <acm@muc.de>

    Fix bug #41618 "(byte-compile 'foo) errors when foo is a macro."
    
    * lisp/emacs-lisp/bytecomp.el (byte-compile): Disentangle the eval of the
    final form from the pushing of 'macro onto it, doing the former first.
---
 lisp/emacs-lisp/bytecomp.el | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/lisp/emacs-lisp/bytecomp.el b/lisp/emacs-lisp/bytecomp.el
index 688f8cf..5479e65 100644
--- a/lisp/emacs-lisp/bytecomp.el
+++ b/lisp/emacs-lisp/bytecomp.el
@@ -2796,14 +2796,15 @@ If FORM is a lambda or a macro, byte-compile it as a 
function."
         ;; Expand macros.
         (setq fun (byte-compile-preprocess fun))
         (setq fun (byte-compile-top-level fun nil 'eval))
-        (if macro (push 'macro fun))
         (if (symbolp form)
             ;; byte-compile-top-level returns an *expression* equivalent to the
             ;; `fun' expression, so we need to evaluate it, tho normally
             ;; this is not needed because the expression is just a constant
             ;; byte-code object, which is self-evaluating.
-            (fset form (eval fun t))
-          fun)))))))
+            (setq fun (eval fun t)))
+        (if macro (push 'macro fun))
+        (if (symbolp form) (fset form fun))
+        fun))))))
 
 (defun byte-compile-sexp (sexp)
   "Compile and return SEXP."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]