mirror of
git://git.sv.gnu.org/emacs.git
synced 2025-12-15 18:40:39 -08:00
Fix spurious "Lexical argument shadows the dynamic variable" due to inlining
Before this patch doing:
rm lisp/calendar/calendar.elc
make lisp/calendar/cal-hebrew.elc
would spew out lots of spurious such warnings about a `date` argument,
pointing to code which has no `date` argument in sight. This was
because that code had calls to inlinable functions (taking a `date`
argument) defined in `calendar.el`, and while `date` is a normal
lexical var at the site of those functions' definitions, it was
declared as dynbound at the call site.
* lisp/emacs-lisp/byte-opt.el (byte-compile-inline-expand):
Don't impose our local context onto the inlined function.
* test/lisp/emacs-lisp/bytecomp-tests.el: Add matching test.
This commit is contained in:
parent
931be5ee7d
commit
b41b4add7b
4 changed files with 31 additions and 2 deletions
|
|
@ -284,8 +284,10 @@
|
|||
;; If `fn' is from the same file, it has already
|
||||
;; been preprocessed!
|
||||
`(function ,fn)
|
||||
(byte-compile-preprocess
|
||||
(byte-compile--reify-function fn)))))
|
||||
;; Try and process it "in its original environment".
|
||||
(let ((byte-compile-bound-variables nil))
|
||||
(byte-compile-preprocess
|
||||
(byte-compile--reify-function fn))))))
|
||||
(if (eq (car-safe newfn) 'function)
|
||||
(byte-compile-unfold-lambda `(,(cadr newfn) ,@(cdr form)))
|
||||
;; This can happen because of macroexp-warn-and-return &co.
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue