Make "eager macro-expansion" warning into an error

* doc/lispref/loading.texi (How Programs Do Loading): Update
documentation.

* lisp/emacs-lisp/macroexp.el:
(internal-macroexpand-for-load): We've been warning about eager
macro expansion for many years, so finally change that into an
error (bug#18154).
This commit is contained in:
Lars Ingebrigtsen 2022-06-30 13:18:15 +02:00
parent a9ebd21304
commit 80cf13a3d2
3 changed files with 8 additions and 6 deletions

View file

@ -149,10 +149,9 @@ up the execution of uncompiled code. Sometimes, this macro expansion
cannot be done, owing to a cyclic dependency. In the simplest
example of this, the file you are loading refers to a macro defined
in another file, and that file in turn requires the file you are
loading. This is generally harmless. Emacs prints a warning
loading. Emacs will issue an error about
(@samp{Eager macro-expansion skipped due to cycle@dots{}})
giving details of the problem, but it still loads the file, just
leaving the macro unexpanded for now. You may wish to restructure
giving details of the problem. You have to restructure
your code so that this does not happen. Loading a compiled file does
not cause macroexpansion, because this should already have happened
during compilation. @xref{Compiling Macros}.

View file

@ -159,6 +159,9 @@ of 'user-emacs-directory'.
* Incompatible changes in Emacs 29.1
+++
** Warning about "eager macro-expansion failure" is changed into an error.
---
** Previously, the X reverseVideo value at startup was heeded for all frames.
This meant that if you had a reverseVideo resource on the initial

View file

@ -796,7 +796,7 @@ test of free variables in the following ways:
(if (eq (car-safe (car bt)) 'macroexpand-all) (setq bt (cdr bt)))
(if macroexp--debug-eager
(debug 'eager-macroexp-cycle)
(message "Warning: Eager macro-expansion skipped due to cycle:\n %s"
(error "Warning: Eager macro-expansion skipped due to cycle:\n %s"
(mapconcat #'prin1-to-string (nreverse bt) " => ")))
(push 'skip macroexp--pending-eager-loads)
form))
@ -811,7 +811,7 @@ test of free variables in the following ways:
;; Hopefully this shouldn't happen thanks to the cycle detection,
;; but in case it does happen, let's catch the error and give the
;; code a chance to macro-expand later.
(message "Eager macro-expansion failure: %S" err)
(error "Eager macro-expansion failure: %S" err)
form))))))
;; ¡¡¡ Big Ugly Hack !!!