* bug#18971: 25.0.50; incorrect warning from byte compiler
@ 2014-11-06 4:14 Tom Tromey
2014-11-06 15:29 ` Stefan Monnier
0 siblings, 1 reply; 7+ messages in thread
From: Tom Tromey @ 2014-11-06 4:14 UTC (permalink / raw)
To: 18971
Byte compile this file:
; -*- lexical-binding:t -*-
(require 'bytecomp)
(defun z ()
(byte-compile-close-variables
(message "hi")))
I get:
In toplevel form:
q.el:3:1:Warning: Unused lexical variable `byte-compile-free-assignments'
q.el:3:1:Warning: Unused lexical variable `byte-compile-free-references'
q.el:3:1:Warning: Unused lexical variable `byte-compile--outbuffer'
I think the warning seems wrong. bytecomp.el has a defvar for each of
these variables, so I expected them not to be considered lexical.
In GNU Emacs 25.0.50.8 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.9)
of 2014-11-05 on bapiya
Repository revision: 118301 monnier@iro.umontreal.ca-20141106032723-sooywb316jlfcpd9
Windowing system distributor `Fedora Project', version 11.0.11404000
Configured using:
`configure --prefix=/home/tromey/Emacs/install'
Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GCONF GSETTINGS
NOTIFY LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
Important settings:
value of $LANG: en_US.UTF-8
value of $XMODIFIERS: @im=none
locale-coding-system: utf-8-unix
Major mode: Emacs-Lisp
Minor modes in effect:
shell-dirtrack-mode: t
diff-auto-refine-mode: t
flyspell-mode: t
which-function-mode: t
global-auto-revert-mode: t
desktop-save-mode: t
erc-services-mode: t
erc-list-mode: t
erc-menu-mode: t
erc-autojoin-mode: t
erc-ring-mode: t
erc-networks-mode: t
erc-pcomplete-mode: t
erc-track-mode: t
erc-match-mode: t
erc-button-mode: t
erc-fill-mode: t
erc-stamp-mode: t
erc-netsplit-mode: t
erc-irccontrols-mode: t
erc-noncommands-mode: t
erc-move-to-prompt-mode: t
erc-readonly-mode: t
savehist-mode: t
tooltip-mode: t
global-eldoc-mode: t
eldoc-mode: t
electric-indent-mode: t
mouse-wheel-mode: t
file-name-shadow-mode: t
global-font-lock-mode: t
font-lock-mode: t
auto-composition-mode: t
auto-encryption-mode: t
auto-compression-mode: t
column-number-mode: t
line-number-mode: t
auto-fill-function: do-auto-fill
Recent messages:
C-x C-g is undefined
Saving file /home/tromey/Emacs/ET/q.el...
Wrote /home/tromey/Emacs/ET/q.el
Saving file /home/tromey/Emacs/ET/q.el...
Wrote /home/tromey/Emacs/ET/q.el
Making completion list...
Mark saved where search started [2 times]
Mark set
Mark saved where search started
Mark set [2 times]
Quit
Load-path shadows:
/home/tromey/.emacs.d/elpa/css-mode-1.0/css-mode hides /home/tromey/Emacs/install/share/emacs/25.0.50/lisp/textmodes/css-mode
/home/tromey/.emacs.d/elpa/bubbles-0.5/bubbles hides /home/tromey/Emacs/install/share/emacs/25.0.50/lisp/play/bubbles
Features:
(shadow sort mail-extr warnings emacsbug sendmail copyright dabbrev
misearch multi-isearch shell message dired rfc822 mml mml-sec mm-decode
mm-bodies mm-encode mail-parse rfc2231 rfc2047 rfc2045 ietf-drums
mailabbrev mail-utils gmm-utils mailheader make-mode texinfo sh-script
smie executable sgml-mode smerge-mode bug-reference goto-addr add-log
cc-mode cc-fonts cc-guess cc-menus cc-cmds vc-arch vc-mtn vc-hg vc-sccs
vc-svn vc-cvs vc-rcs jka-compr vc-bzr vc-git diff-mode easy-mmode
flyspell ispell diminish projectile edmacro kmacro pkg-info find-func
lisp-mnt epl grep compile dash s appt diary-lib diary-loaddefs cal-menu
calendar cal-loaddefs which-func imenu minimap autorevert filenotify
desktop frameset cus-start cus-load status erc-services erc-list
erc-menu erc-join erc-ring erc-networks erc-pcomplete pcomplete
erc-track erc-match erc-button wid-edit erc-fill erc-stamp erc-netsplit
erc-goodies erc erc-backend erc-compat format-spec auth-source cl-macs
gv eieio byte-opt bytecomp byte-compile cl-extra cconv eieio-core
gnus-util mm-util mail-prsvr password-cache thingatpt pp advice help-fns
vc-dir ewoc vc cl-loaddefs cl-lib vc-dispatcher cc-styles cc-align
cc-engine cc-vars cc-defs bbdb timezone ange-ftp comint ansi-color ring
server savehist dwarf-mode-autoloads gdb-shell-autoloads
jabber-autoloads lisppaste-autoloads pydoc-info-autoloads info-look info
easymenu weblogger-autoloads package epg-config bbdb-autoloads time-date
tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type
mwheel x-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list newcomment elisp-mode lisp-mode prog-mode register page
menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock
syntax facemenu font-core frame cham georgian utf-8-lang misc-lang
vietnamese tibetan thai tai-viet lao korean japanese hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer nadvice
loaddefs button faces cus-face macroexp files text-properties overlay
sha1 md5 base64 format env code-pages mule custom widget
hashtable-print-readable backquote make-network-process dbusbind
gfilenotify dynamic-setting system-font-setting font-render-setting
move-toolbar gtk x-toolkit x multi-tty emacs)
Memory information:
((conses 16 421995 36333)
(symbols 48 36948 0)
(miscs 40 21361 845)
(strings 32 76233 10784)
(string-bytes 1 2288448)
(vectors 16 30564)
(vector-slots 8 656796 18204)
(floats 8 151 435)
(intervals 56 16761 235)
(buffers 976 171)
(heap 1024 59018 1707))
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#18971: 25.0.50; incorrect warning from byte compiler
2014-11-06 4:14 bug#18971: 25.0.50; incorrect warning from byte compiler Tom Tromey
@ 2014-11-06 15:29 ` Stefan Monnier
2014-11-06 15:46 ` Tom Tromey
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2014-11-06 15:29 UTC (permalink / raw)
To: Tom Tromey; +Cc: 18971
> ; -*- lexical-binding:t -*-
> (require 'bytecomp)
> (defun z ()
> (byte-compile-close-variables
> (message "hi")))
If it hurts, don't do that.
`byte-compile-close-variables' is an internal macro in bytecomp.el.
Why do you need to use it elsewhere?
Stefan
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#18971: 25.0.50; incorrect warning from byte compiler
2014-11-06 15:29 ` Stefan Monnier
@ 2014-11-06 15:46 ` Tom Tromey
2014-11-06 23:27 ` Stefan Monnier
0 siblings, 1 reply; 7+ messages in thread
From: Tom Tromey @ 2014-11-06 15:46 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 18971, Tom Tromey
>>>>> "Stefan" == Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> ; -*- lexical-binding:t -*-
>> (require 'bytecomp)
>> (defun z ()
>> (byte-compile-close-variables
>> (message "hi")))
Stefan> If it hurts, don't do that.
Stefan> `byte-compile-close-variables' is an internal macro in bytecomp.el.
Stefan> Why do you need to use it elsewhere?
I want to be able to call byte-optimize-form and was under the
impression that byte-compile-close-variables was needed. I'm doing this
for a project I'm working on where it is convenient to let the byte
compiler code macroexpand a form and do some simple optimizations on it.
I guess I don't understand why this would not be a bug, though.
Or at least it perplexes me why this happens; my only theory is that
somehow the defvars aren't seen when byte-compiling my file. I suppose
if I wanted to export a macro like this, I would need it to come with
special declarations for the variables? Except I didn't see a way to do
that either.
Tom
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#18971: 25.0.50; incorrect warning from byte compiler
2014-11-06 15:46 ` Tom Tromey
@ 2014-11-06 23:27 ` Stefan Monnier
2014-12-29 19:40 ` Tom Tromey
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2014-11-06 23:27 UTC (permalink / raw)
To: Tom Tromey; +Cc: 18971
> I want to be able to call byte-optimize-form and was under the
> impression that byte-compile-close-variables was needed. I'm doing this
> for a project I'm working on where it is convenient to let the byte
> compiler code macroexpand a form and do some simple optimizations on it.
Just curious: why do you need those simple optimizations performed by
byte-optimize-form?
> I guess I don't understand why this would not be a bug, though.
> Or at least it perplexes me why this happens; my only theory is that
> somehow the defvars aren't seen when byte-compiling my file. I suppose
> if I wanted to export a macro like this, I would need it to come with
> special declarations for the variables? Except I didn't see a way to do
> that either.
Those vars are not globally bound, i.e. they are only declared with
(defvar <var>) and this only affects the file in which they appear (or
even the scope, in case they appear within a defun body).
So the macro would need to expand to something like
(progn
(defvar byte-compile-free-assignments)
...
(defvar byte-compile-free-references)
(let (...) ...))
if it was meant to be used outside of bytecomp.el.
Stefan
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#18971: 25.0.50; incorrect warning from byte compiler
2014-11-06 23:27 ` Stefan Monnier
@ 2014-12-29 19:40 ` Tom Tromey
2014-12-30 2:48 ` Stefan Monnier
0 siblings, 1 reply; 7+ messages in thread
From: Tom Tromey @ 2014-12-29 19:40 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 18971, Tom Tromey
>> I want to be able to call byte-optimize-form and was under the
>> impression that byte-compile-close-variables was needed. I'm doing this
>> for a project I'm working on where it is convenient to let the byte
>> compiler code macroexpand a form and do some simple optimizations on it.
Stefan> Just curious: why do you need those simple optimizations performed by
Stefan> byte-optimize-form?
I'm writing an elisp compiler and it just seemed handy.
I can probably reimplement the optimizations though.
Tom
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#18971: 25.0.50; incorrect warning from byte compiler
2014-12-29 19:40 ` Tom Tromey
@ 2014-12-30 2:48 ` Stefan Monnier
2019-06-12 15:11 ` Lars Ingebrigtsen
0 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2014-12-30 2:48 UTC (permalink / raw)
To: Tom Tromey; +Cc: 18971
> I'm writing an elisp compiler and it just seemed handy.
> I can probably reimplement the optimizations though.
Or you can add all the corresponding (defvar <foo>), of course.
Stefan
^ permalink raw reply [flat|nested] 7+ messages in thread
* bug#18971: 25.0.50; incorrect warning from byte compiler
2014-12-30 2:48 ` Stefan Monnier
@ 2019-06-12 15:11 ` Lars Ingebrigtsen
0 siblings, 0 replies; 7+ messages in thread
From: Lars Ingebrigtsen @ 2019-06-12 15:11 UTC (permalink / raw)
To: Stefan Monnier; +Cc: 18971, Tom Tromey
Stefan Monnier <monnier@iro.umontreal.ca> writes:
>> I'm writing an elisp compiler and it just seemed handy.
>> I can probably reimplement the optimizations though.
>
> Or you can add all the corresponding (defvar <foo>), of course.
So there doesn't seem to be a bug here, and I'm closing this bug report.
--
(domestic pets only, the antidote for overdose, milk.)
bloggy blog: http://lars.ingebrigtsen.no
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-06-12 15:11 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2014-11-06 4:14 bug#18971: 25.0.50; incorrect warning from byte compiler Tom Tromey
2014-11-06 15:29 ` Stefan Monnier
2014-11-06 15:46 ` Tom Tromey
2014-11-06 23:27 ` Stefan Monnier
2014-12-29 19:40 ` Tom Tromey
2014-12-30 2:48 ` Stefan Monnier
2019-06-12 15:11 ` Lars Ingebrigtsen
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).