GNU bug report logs -
#14551
compiler fails to track eval-when-compile in required files
Previous Next
To reply to this bug, email your comments to 14551 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#14551
; Package
emacs
.
(Mon, 03 Jun 2013 20:33:02 GMT)
Full text and
rfc822 format available.
Message #3 received at submit <at> debbugs.gnu.org (full text, mbox):
Package: emacs
Severity: minor
Version: 24.3
(I guess this issue has always been present.)
Suppose we have three files:
foo.el:
(require 'lib)
(defun foo ()
(lib2-func))
lib.el:
(eval-when-compile
(require 'lib2))
(provide 'lib)
lib2.el:
(defun lib2-func ()
t)
(provide 'lib2)
rm lib*.elc
emacs -Q -L . -batch -f batch-byte-compile foo.el
produces no warnings.
If lib.el is compiled first though:
emacs -Q -L . -batch -f batch-byte-compile lib.el
emacs -Q -L . -batch -f batch-byte-compile foo.el
In end of data:
foo.el:6:1:Warning: the function `lib2-func' is not known to be defined.
eval-when-compile is equivalent to progn in uncompiled code, and the
compiler doesn't compile things brought in by require.
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#14551
; Package
emacs
.
(Mon, 03 Jun 2013 21:02:02 GMT)
Full text and
rfc822 format available.
Message #6 received at 14551 <at> debbugs.gnu.org (full text, mbox):
> foo.el:
> (require 'lib)
> (defun foo ()
> (lib2-func))
[...]
> lib.el:
> (eval-when-compile
> (require 'lib2))
> (provide 'lib)
[...]
> rm lib*.elc
> emacs -Q -L . -batch -f batch-byte-compile foo.el
> produces no warnings.
Yes, that's a long standing bug. Fixing it right is likely to be pretty
tricky/difficult because it means we need to disregard some of the
packages already loaded somehow. In the general case, you have the same
problem even without eval-when-compile, e.g. if you have in lib.el
a call to an autoloaded macro, in which case the autoloaded package will
be loaded if lib.el is not yet compiled but not if it is.
The "noruntime" warnings are implemented with a pile of hacks, and I'd
rather not add to them. So, given that a proper fix looks pretty
difficult, I wouldn't hold my breath.
Stefan
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#14551
; Package
emacs
.
(Wed, 10 Jan 2024 11:18:01 GMT)
Full text and
rfc822 format available.
Message #9 received at 14551 <at> debbugs.gnu.org (full text, mbox):
Stefan Monnier <monnier <at> iro.umontreal.ca> writes:
>> foo.el:
>> (require 'lib)
>> (defun foo ()
>> (lib2-func))
> [...]
>> lib.el:
>> (eval-when-compile
>> (require 'lib2))
>> (provide 'lib)
> [...]
>> rm lib*.elc
>> emacs -Q -L . -batch -f batch-byte-compile foo.el
>> produces no warnings.
>
> Yes, that's a long standing bug. Fixing it right is likely to be pretty
> tricky/difficult because it means we need to disregard some of the
> packages already loaded somehow. In the general case, you have the same
> problem even without eval-when-compile, e.g. if you have in lib.el
> a call to an autoloaded macro, in which case the autoloaded package will
> be loaded if lib.el is not yet compiled but not if it is.
>
> The "noruntime" warnings are implemented with a pile of hacks, and I'd
> rather not add to them. So, given that a proper fix looks pretty
> difficult, I wouldn't hold my breath.
Is still an issue 10 years later?
Information forwarded
to
bug-gnu-emacs <at> gnu.org
:
bug#14551
; Package
emacs
.
(Fri, 12 Jan 2024 15:58:01 GMT)
Full text and
rfc822 format available.
Message #12 received at 14551 <at> debbugs.gnu.org (full text, mbox):
> Is still an issue 10 years later?
I don't think anything has changed in this respect.
Stefan
This bug report was last modified 313 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.