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:
parent
a9ebd21304
commit
80cf13a3d2
3 changed files with 8 additions and 6 deletions
|
@ -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}.
|
||||
|
|
3
etc/NEWS
3
etc/NEWS
|
@ -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
|
||||
|
|
|
@ -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 !!!
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue