(byte-compile): Fix interaction with old advice.el

* lisp/emacs-lisp/bytecomp.el (byte-compile): Handle symbols whose
function "value" is a bare lambda expression (bug#70368).
This commit is contained in:
Stefan Monnier 2024-04-29 13:14:31 -04:00
parent 3be382311f
commit 7cf767ef54

View file

@ -2962,8 +2962,10 @@ If FORM is a lambda or a macro, byte-compile it as a function."
(when (or (symbolp form) (interpreted-function-p fun))
;; `fun' is a function *value*, so try to recover its
;; corresponding source code.
(setq lexical-binding (not (null (aref fun 2))))
(setq fun (byte-compile--reify-function fun))
(if (not (interpreted-function-p fun))
(setq lexical-binding nil)
(setq lexical-binding (not (null (aref fun 2))))
(setq fun (byte-compile--reify-function fun)))
(setq need-a-value t))
;; Expand macros.
(setq fun (byte-compile-preprocess fun))