* lisp/emacs-lisp/macroexp.el: Break cycle with bytecomp/byte-opt
The recent change in macroexp triggered a cyclic dependency error during eager macroexpansion when neither `bytecomp` nor `byte-opt` had been byte-compiled yet. This fixes it by moving the offending function to macroexp.el. * lisp/emacs-lisp/macroexp.el (macroexp--unfold-lambda): Move from byte-opt.el and rename. (macroexp--expand-all): Use it. * lisp/emacs-lisp/byte-opt.el (byte-compile-unfold-lambda): Move to macroexp.el. (byte-compile-inline-expand, byte-optimize-form-code-walker): * lisp/emacs-lisp/bytecomp.el (byte-compile-form): Use `macroexp--unfold-lambda` instead.
This commit is contained in:
parent
3c53d28ae1
commit
04fb1664a8
3 changed files with 68 additions and 78 deletions
|
@ -195,7 +195,6 @@ otherwise adds \".elc\"."
|
|||
(autoload 'byte-optimize-form "byte-opt")
|
||||
;; This is the entry point to the lapcode optimizer pass2.
|
||||
(autoload 'byte-optimize-lapcode "byte-opt")
|
||||
(autoload 'byte-compile-unfold-lambda "byte-opt")
|
||||
|
||||
;; This is the entry point to the decompiler, which is used by the
|
||||
;; disassembler. The disassembler just requires 'byte-compile, but
|
||||
|
@ -3277,7 +3276,7 @@ for symbols generated by the byte compiler itself."
|
|||
((and (eq (car-safe (car form)) 'lambda)
|
||||
;; if the form comes out the same way it went in, that's
|
||||
;; because it was malformed, and we couldn't unfold it.
|
||||
(not (eq form (setq form (byte-compile-unfold-lambda form)))))
|
||||
(not (eq form (setq form (macroexp--unfold-lambda form)))))
|
||||
(byte-compile-form form byte-compile--for-effect)
|
||||
(setq byte-compile--for-effect nil))
|
||||
((byte-compile-normal-call form)))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue