* bug#11938: 24.1.50; Some not so useful CL related byte compiler warnings
@ 2012-07-13 18:00 Michael Heerdegen
2012-07-13 18:18 ` Andreas Schwab
2012-07-18 10:25 ` Stefan Monnier
0 siblings, 2 replies; 4+ messages in thread
From: Michael Heerdegen @ 2012-07-13 18:00 UTC (permalink / raw)
To: 11938
Hi,
I create an example file with the following content:
(eval-when-compile
(require 'cl))
(defvar my-holiday-alist
'((2012 . ((( 1 1) . "New Year")))))
(defun* my-holidayp (&optional date no-warn-if-no-info)
(save-excursion
(progv '(a b year) date
(cdr (assoc (list a b)
(cdr (or (assoc year my-holiday-alist)
(prog1 nil ;always return nil
(push (cons year ()) my-holiday-alist) ;; --> Warn only one time
(unless no-warn-if-no-info
(ding)
(message "Note: No holiday info for %s in `my-holiday-alist'." year)
(sit-for 3))))))))))
(labels ((fac (x) (if (< x 2) 1 (* x (fac (1- x))))))
(defun test () (fac 5)))
If I byte compile it, I get the following warnings:
progv-bug.el:7:37:Warning: global/dynamic var `body' lacks a prefix
progv-bug.el:10:25:Warning: reference to free variable `a'
progv-bug.el:10:27:Warning: reference to free variable `b'
progv-bug.el:11:35:Warning: reference to free variable `year'
progv-bug.el:19:1:Warning: `labels' is an obsolete function (as of 24.2); use
`(quote cl-labels)' instead.
In detail:
progv-bug.el:7:37:Warning: global/dynamic var `body' lacks a prefix
Dunno what that means, the code doesn't include such a variable.
progv-bug.el:10:25:Warning: reference to free variable `a'
progv-bug.el:10:27:Warning: reference to free variable `b'
progv-bug.el:11:35:Warning: reference to free variable `year'
Not very useful, since the variables' values are never looked up
before they are bound, but ok, I can live with it.
progv-bug.el:19:1:Warning: `labels' is an obsolete function (as of 24.2); use
`(quote cl-labels)' instead.
What does `(quote cl-labels)' mean? I guess this should be just
`cl-labels'.
Thanks,
Michael.
In GNU Emacs 24.1.50.1 (i486-pc-linux-gnu, GTK+ Version 3.4.2)
of 2012-07-12 on keller, modified by Debian
(emacs-snapshot package, version 2:20120712-1)
Windowing system distributor `The X.Org Foundation', version 11.0.11201902
Configured using:
`configure '--build' 'i486-linux-gnu' '--host' 'i486-linux-gnu'
'--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib'
'--localstatedir=/var' '--infodir=/usr/share/info'
'--mandir=/usr/share/man' '--with-pop=yes'
'--enable-locallisppath=/etc/emacs-snapshot:/etc/emacs:/usr/local/share/emacs/24.1.50/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/24.1.50/site-lisp:/usr/share/emacs/site-lisp'
'--without-compress-info' '--with-crt-dir=/usr/lib/i386-linux-gnu/'
'--with-x=yes' '--with-x-toolkit=gtk3' '--with-imagemagick=yes'
'build_alias=i486-linux-gnu' 'host_alias=i486-linux-gnu'
'CFLAGS=-DDEBIAN -DSITELOAD_PURESIZE_EXTRA=5000 -g -O2' 'LDFLAGS=-g
-Wl,--as-needed -znocombreloc' 'CPPFLAGS=-D_FORTIFY_SOURCE=2''
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#11938: 24.1.50; Some not so useful CL related byte compiler warnings
2012-07-13 18:00 bug#11938: 24.1.50; Some not so useful CL related byte compiler warnings Michael Heerdegen
@ 2012-07-13 18:18 ` Andreas Schwab
2012-07-18 10:25 ` Stefan Monnier
1 sibling, 0 replies; 4+ messages in thread
From: Andreas Schwab @ 2012-07-13 18:18 UTC (permalink / raw)
To: michael_heerdegen; +Cc: 11938
Michael Heerdegen <michael_heerdegen@web.de> writes:
> progv-bug.el:19:1:Warning: `labels' is an obsolete function (as of 24.2); use
> `(quote cl-labels)' instead.
>
> What does `(quote cl-labels)' mean? I guess this should be just
> `cl-labels'.
Fixed.
Andreas.
--
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756 01D3 44D5 214B 8276 4ED5
"And now for something completely different."
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#11938: 24.1.50; Some not so useful CL related byte compiler warnings
2012-07-13 18:00 bug#11938: 24.1.50; Some not so useful CL related byte compiler warnings Michael Heerdegen
2012-07-13 18:18 ` Andreas Schwab
@ 2012-07-18 10:25 ` Stefan Monnier
2012-07-19 0:19 ` Juanma Barranquero
1 sibling, 1 reply; 4+ messages in thread
From: Stefan Monnier @ 2012-07-18 10:25 UTC (permalink / raw)
To: michael_heerdegen; +Cc: 11938
> If I byte compile it, I get the following warnings:
> progv-bug.el:7:37:Warning: global/dynamic var `body' lacks a prefix
> progv-bug.el:10:25:Warning: reference to free variable `a'
> progv-bug.el:10:27:Warning: reference to free variable `b'
> progv-bug.el:11:35:Warning: reference to free variable `year'
> progv-bug.el:19:1:Warning: `labels' is an obsolete function (as of 24.2); use
> `(quote cl-labels)' instead.
Yay!! So there are progv users after all! Amazing!
> In detail:
> progv-bug.el:7:37:Warning: global/dynamic var `body' lacks a prefix
> Dunno what that means, the code doesn't include such a variable.
Yes, it's a bug of my new progv code, which introduces this var.
Should be fixed now, thank you.
> progv-bug.el:10:25:Warning: reference to free variable `a'
> progv-bug.el:10:27:Warning: reference to free variable `b'
> progv-bug.el:11:35:Warning: reference to free variable `year'
> Not very useful, since the variables' values are never looked up
> before they are bound, but ok, I can live with it.
Yes, I think these warnings were already present with Emacs-24.1's
version of progv.
I'm curious, actually. What does Common-Lisp do with something like:
(let ((a 2)) (progv '(a b) '(1 2) a))
does it return 2 (the value of the lexically-scoped var `a') or 1?
If it should return 1, what about:
(let ((a 2)) (progv '(b) '(1) a))
In any case, for all uses of progv where the first arg is a constant,
you'd be much better off using pcase-let (or destructuring-bind or
multiple-value-bind).
So maybe you're not a user of progv after all.
> progv-bug.el:19:1:Warning: `labels' is an obsolete function (as of 24.2); use
> `(quote cl-labels)' instead.
> What does `(quote cl-labels)' mean? I guess this should be just
> `cl-labels'.
Indeed, that was a copy&paste typo, thank you for catching it,
Stefan
^ permalink raw reply [flat|nested] 4+ messages in thread
* bug#11938: 24.1.50; Some not so useful CL related byte compiler warnings
2012-07-18 10:25 ` Stefan Monnier
@ 2012-07-19 0:19 ` Juanma Barranquero
0 siblings, 0 replies; 4+ messages in thread
From: Juanma Barranquero @ 2012-07-19 0:19 UTC (permalink / raw)
To: Stefan Monnier; +Cc: michael_heerdegen, 11938
On Wed, Jul 18, 2012 at 12:25 PM, Stefan Monnier
<monnier@iro.umontreal.ca> wrote:
> I'm curious, actually. What does Common-Lisp do with something like:
>
> (let ((a 2)) (progv '(a b) '(1 2) a))
>
> does it return 2 (the value of the lexically-scoped var `a') or 1?
SBCL, CLisp and Clozure agree on the result: 2
Juanma
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2012-07-19 0:19 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2012-07-13 18:00 bug#11938: 24.1.50; Some not so useful CL related byte compiler warnings Michael Heerdegen
2012-07-13 18:18 ` Andreas Schwab
2012-07-18 10:25 ` Stefan Monnier
2012-07-19 0:19 ` Juanma Barranquero
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.