GNU bug report logs - #24641
let-alist redundantly binds variables already bound by nested let-alist calls

Previous Next

Package: emacs;

Reported by: Philipp <p.stephani2 <at> gmail.com>

Date: Sat, 8 Oct 2016 12:48:01 UTC

Severity: minor

Tags: confirmed, fixed

Found in version 26.0.50

Fixed in version 26

Done: npostavs <at> users.sourceforge.net

Bug is archived. No further changes may be made.

To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 24641 in the body.
You can then email your comments to 24641 AT debbugs.gnu.org in the normal way.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-gnu-emacs <at> gnu.org:
bug#24641; Package emacs. (Sat, 08 Oct 2016 12:48:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Philipp <p.stephani2 <at> gmail.com>:
New bug report received and forwarded. Copy sent to bug-gnu-emacs <at> gnu.org. (Sat, 08 Oct 2016 12:48:02 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Philipp <p.stephani2 <at> gmail.com>
To: bug-gnu-emacs <at> gnu.org
Subject: 26.0.50;
 let-alist: Incorrect byte-compile warning about unused lexical
 variable
Date: Sat, 08 Oct 2016 14:43:03 +0200
$ cat /tmp/letalist.el 
;; -*- lexical-binding: t; -*-
(print
 (let-alist '((outer . ((inner . value))))
   (let-alist .outer .inner)))
   
$ emacs -Q -batch -f batch-byte-compile /tmp/letalist.el 

In toplevel form:
/tmp/letalist.el:2:1:Warning: Unused lexical variable ‘\.inner’

This warning is incorrect because '.inner' is used in the inner
let-alist form.


In GNU Emacs 26.0.50.2 (x86_64-unknown-linux-gnu, GTK+ Version 3.10.8)
 of 2016-10-07 built on localhost
Repository revision: 1686a0cde3d6adced3b5393945d6a9ab71b4a3c9
Windowing system distributor 'The X.Org Foundation', version 11.0.11702000
System Description:	Ubuntu 14.04 LTS

Recent messages:
For information about GNU Emacs and the GNU system, type C-h C-a.

Configured features:
XPM JPEG TIFF GIF PNG SOUND GSETTINGS NOTIFY GNUTLS FREETYPE XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: Lisp Interaction

Minor modes in effect:
  tooltip-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  tool-bar-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  line-number-mode: t
  transient-mark-mode: t

Load-path shadows:
None found.

Features:
(shadow sort mail-extr emacsbug message subr-x puny seq byte-opt gv
bytecomp byte-compile cl-extra help-mode cconv cl-loaddefs pcase cl-lib
dired dired-loaddefs format-spec rfc822 mml easymenu mml-sec
password-cache epa derived epg epg-config gnus-util rmail rmail-loaddefs
mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils
mailheader sendmail rfc2047 rfc2045 ietf-drums mm-util mail-prsvr
mail-utils time-date mule-util tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-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 term/tty-colors frame cl-generic cham georgian
utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean
japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese charscript case-table epa-hook
jka-cmpr-hook help simple abbrev obarray minibuffer cl-preloaded 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 inotify dynamic-setting
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 97276 8627)
 (symbols 48 20242 0)
 (miscs 40 330 118)
 (strings 32 17820 3260)
 (string-bytes 1 578593)
 (vectors 16 13702)
 (vector-slots 8 448689 6242)
 (floats 8 181 14)
 (intervals 56 190 0)
 (buffers 976 11)
 (heap 1024 46517 1112))




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24641; Package emacs. (Sat, 08 Oct 2016 13:10:02 GMT) Full text and rfc822 format available.

Message #8 received at 24641 <at> debbugs.gnu.org (full text, mbox):

From: npostavs <at> users.sourceforge.net
To: Philipp <p.stephani2 <at> gmail.com>
Cc: 24641 <at> debbugs.gnu.org
Subject: Re: bug#24641: 26.0.50;
 let-alist: Incorrect byte-compile warning about unused lexical
 variable
Date: Sat, 08 Oct 2016 09:09:52 -0400
retitle 24641 let-alist redundantly binds variables already bound by nested let-alist calls
severity 24641 minor
tags 24641 confirmed
quit

Philipp <p.stephani2 <at> gmail.com> writes:

> $ cat /tmp/letalist.el 
> ;; -*- lexical-binding: t; -*-
> (print
>  (let-alist '((outer . ((inner . value))))
>    (let-alist .outer .inner)))
>    
> $ emacs -Q -batch -f batch-byte-compile /tmp/letalist.el 
>
> In toplevel form:
> /tmp/letalist.el:2:1:Warning: Unused lexical variable ‘\.inner’
>
> This warning is incorrect because '.inner' is used in the inner
> let-alist form.

The byte compiler warning correct, the problem is in let-alist: both the
outer and inner let-alist calls let-bind '.inner'.  Here is the
macroexpansion:

(let
    ((#1=#:alist
      '((outer
         (inner . value)))))
  (let
      ((\.outer
        (cdr
         (assq 'outer #1#)))
       (\.inner ; <------------ this one is unused
        (cdr
         (assq 'inner #1#))))
    (let
        ((#2=#:alist \.outer))
      (let
          ((\.inner
            (cdr
             (assq 'inner #2#))))
        \.inner))))




Changed bug title to 'let-alist redundantly binds variables already bound by nested let-alist calls' from '26.0.50; let-alist: Incorrect byte-compile warning about unused lexical variable' Request was from npostavs <at> users.sourceforge.net to control <at> debbugs.gnu.org. (Sat, 08 Oct 2016 13:10:03 GMT) Full text and rfc822 format available.

Severity set to 'minor' from 'normal' Request was from npostavs <at> users.sourceforge.net to control <at> debbugs.gnu.org. (Sat, 08 Oct 2016 13:10:03 GMT) Full text and rfc822 format available.

Added tag(s) confirmed. Request was from npostavs <at> users.sourceforge.net to control <at> debbugs.gnu.org. (Sat, 08 Oct 2016 13:10:03 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24641; Package emacs. (Sat, 08 Oct 2016 13:34:01 GMT) Full text and rfc822 format available.

Message #17 received at 24641 <at> debbugs.gnu.org (full text, mbox):

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: 24641 <at> debbugs.gnu.org
Subject: Re: bug#24641: 26.0.50; let-alist: Incorrect byte-compile warning
 about unused lexical variable
Date: Sat, 08 Oct 2016 13:33:20 +0000
[Message part 1 (text/plain, inline)]
Philipp <p.stephani2 <at> gmail.com> schrieb am Sa., 8. Okt. 2016 um 14:48 Uhr:

>
>
> $ cat /tmp/letalist.el
>
> ;; -*- lexical-binding: t; -*-
>
> (print
>
>  (let-alist '((outer . ((inner . value))))
>
>    (let-alist .outer .inner)))
>
>
>
> $ emacs -Q -batch -f batch-byte-compile /tmp/letalist.el
>
>
>
> In toplevel form:
>
> /tmp/letalist.el:2:1:Warning: Unused lexical variable ‘\.inner’
>
>
>
> This warning is incorrect because '.inner' is used in the inner
>
> let-alist form.
>
>
>
>
I've attached a patch.
[Message part 2 (text/html, inline)]
[0001-Don-t-consider-nested-let-alist-forms.txt (text/plain, attachment)]

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24641; Package emacs. (Sat, 08 Oct 2016 14:36:01 GMT) Full text and rfc822 format available.

Message #20 received at 24641 <at> debbugs.gnu.org (full text, mbox):

From: npostavs <at> users.sourceforge.net
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 24641 <at> debbugs.gnu.org
Subject: Re: bug#24641: 26.0.50;
 let-alist: Incorrect byte-compile warning about unused lexical
 variable
Date: Sat, 08 Oct 2016 10:35:28 -0400
Philipp Stephani <p.stephani2 <at> gmail.com> writes:
>
> I've attached a patch.

Looks good to me.




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24641; Package emacs. (Sat, 08 Oct 2016 16:38:01 GMT) Full text and rfc822 format available.

Message #23 received at 24641 <at> debbugs.gnu.org (full text, mbox):

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: npostavs <at> users.sourceforge.net
Cc: 24641 <at> debbugs.gnu.org
Subject: Re: bug#24641: 26.0.50; let-alist: Incorrect byte-compile warning
 about unused lexical variable
Date: Sat, 08 Oct 2016 16:37:38 +0000
[Message part 1 (text/plain, inline)]
<npostavs <at> users.sourceforge.net> schrieb am Sa., 8. Okt. 2016 um 16:34 Uhr:

> Philipp Stephani <p.stephani2 <at> gmail.com> writes:
>
> >
>
> > I've attached a patch.
>
>
>
> Looks good to me.
>
>
Thanks, pushed to master.
[Message part 2 (text/html, inline)]

Added tag(s) fixed. Request was from npostavs <at> users.sourceforge.net to control <at> debbugs.gnu.org. (Sat, 08 Oct 2016 23:55:01 GMT) Full text and rfc822 format available.

bug marked as fixed in version 26, send any further explanations to 24641 <at> debbugs.gnu.org and Philipp <p.stephani2 <at> gmail.com> Request was from npostavs <at> users.sourceforge.net to control <at> debbugs.gnu.org. (Sat, 08 Oct 2016 23:55:01 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24641; Package emacs. (Sun, 09 Oct 2016 20:53:02 GMT) Full text and rfc822 format available.

Message #30 received at 24641 <at> debbugs.gnu.org (full text, mbox):

From: Mark Oteiza <mvoteiza <at> udel.edu>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 24641 <at> debbugs.gnu.org, npostavs <at> users.sourceforge.net
Subject: Re: bug#24641: 26.0.50;
 let-alist: Incorrect byte-compile warning about unused lexical
 variable
Date: Sun, 09 Oct 2016 16:51:42 -0400
Philipp Stephani <p.stephani2 <at> gmail.com> writes:

> <npostavs <at> users.sourceforge.net> schrieb am Sa., 8. Okt. 2016 um 16:34 Uhr:
>
>  Philipp Stephani <p.stephani2 <at> gmail.com> writes:
>
>  > I've attached a patch.
>
>  Looks good to me.
>
> Thanks, pushed to master. 

The package version should probably get bumped, WDYT?




Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24641; Package emacs. (Sat, 15 Oct 2016 20:25:01 GMT) Full text and rfc822 format available.

Message #33 received at 24641 <at> debbugs.gnu.org (full text, mbox):

From: Philipp Stephani <p.stephani2 <at> gmail.com>
To: Mark Oteiza <mvoteiza <at> udel.edu>
Cc: 24641 <at> debbugs.gnu.org, npostavs <at> users.sourceforge.net
Subject: Re: bug#24641: 26.0.50; let-alist: Incorrect byte-compile warning
 about unused lexical variable
Date: Sat, 15 Oct 2016 20:24:41 +0000
[Message part 1 (text/plain, inline)]
Mark Oteiza <mvoteiza <at> udel.edu> schrieb am So., 9. Okt. 2016 um 22:51 Uhr:

> Philipp Stephani <p.stephani2 <at> gmail.com> writes:
>
> > <npostavs <at> users.sourceforge.net> schrieb am Sa., 8. Okt. 2016 um 16:34
> Uhr:
> >
> >  Philipp Stephani <p.stephani2 <at> gmail.com> writes:
> >
> >  > I've attached a patch.
> >
> >  Looks good to me.
> >
> > Thanks, pushed to master.
>
> The package version should probably get bumped, WDYT?
>

Maybe, is there a policy for this? IIUC now that let-alist is part of Emacs
core we don't care about package versions any more?
[Message part 2 (text/html, inline)]

bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Sun, 13 Nov 2016 12:24:04 GMT) Full text and rfc822 format available.

bug unarchived. Request was from Mark Oteiza <mvoteiza <at> udel.edu> to control <at> debbugs.gnu.org. (Thu, 26 Jan 2017 16:03:02 GMT) Full text and rfc822 format available.

Information forwarded to bug-gnu-emacs <at> gnu.org:
bug#24641; Package emacs. (Thu, 26 Jan 2017 16:14:02 GMT) Full text and rfc822 format available.

Message #40 received at 24641 <at> debbugs.gnu.org (full text, mbox):

From: Mark Oteiza <mvoteiza <at> udel.edu>
To: Philipp Stephani <p.stephani2 <at> gmail.com>
Cc: 24641 <at> debbugs.gnu.org, npostavs <at> users.sourceforge.net
Subject: Re: bug#24641: 26.0.50; let-alist: Incorrect byte-compile warning
 about unused lexical variable
Date: Thu, 26 Jan 2017 11:13:21 -0500
On 15/10/16 at 08:24pm, Philipp Stephani wrote:
> Mark Oteiza <mvoteiza <at> udel.edu> schrieb am So., 9. Okt. 2016 um 22:51 Uhr:
> > The package version should probably get bumped, WDYT?
> 
> Maybe, is there a policy for this? IIUC now that let-alist is part of Emacs
> core we don't care about package versions any more?

As long as it lives in ELPA and supports older emacs, we should care.
Since it was a bug in let-alist, I'm inclined to bump it (to 1.0.5).

(I just came across some let-alist stuff written oddly because of the
original bug, hence the necrobump)




bug archived. Request was from Debbugs Internal Request <help-debbugs <at> gnu.org> to internal_control <at> debbugs.gnu.org. (Fri, 24 Feb 2017 12:24:07 GMT) Full text and rfc822 format available.

This bug report was last modified 8 years and 170 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.