Subject: bug#11938: 24.1.50; Some not so useful CL related byte compiler warnings

From: Michael Heerdegen <[email-masked]>
Date: Fri, 13 Jul 2012 20:00:23 +0200

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''