GNU bug report logs - #51695
29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue

Previous Next

Package: emacs;

Reported by: Emanuel Berg <moasenwood <at> zoho.eu>

Date: Mon, 8 Nov 2021 23:41:02 UTC

Severity: normal

Tags: confirmed

Found in version 29.0.50

Done: Stefan Monnier <monnier <at> iro.umontreal.ca>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Eli Zaretskii <eliz <at> gnu.org>
To: Emanuel Berg <moasenwood <at> zoho.eu>
Cc: 51695 <at> debbugs.gnu.org, monnier <at> iro.umontreal.ca
Subject: bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue
Date: Tue, 09 Nov 2021 14:29:58 +0200
> Cc: Stefan Monnier <monnier <at> iro.umontreal.ca>
> Date: Tue, 09 Nov 2021 00:40:33 +0100
> From:  Emanuel Berg via "Bug reports for GNU Emacs,
>  the Swiss army knife of text editors" <bug-gnu-emacs <at> gnu.org>
> 
> ;;; -*- lexical-binding: t -*-
> ;;;
> ;;; this file:
> ;;;   http://user.it.uu.se/~embe8573/emacs-init/geh.el
> ;;;   https://dataswamp.org/~incal/emacs-init/geh.el
> 
> (let ((data-item 1)
>       (more-data 2) )
>     (defun echo-data (&optional data)
>       (interactive (list (read-number "number: " (or data-item more-data))))
>       (message "data: %s" (or data data-item)) ))
> ;; (echo-data 5)
> ;; (echo-data)
> ;; (call-interactively #'echo-data)
> 
> ;; Emacs bugs:
> ;;
> ;; 1. Byte compiler warnings (two cases) relating to the
> ;;    interactive spec:
> ;;
> ;;    geh.el:7:1: Warning: Unused lexical variable `more-data'
> ;;    geh.el:10:54: Warning: reference to free variable ‘data-item’
> ;;    geh.el:10:64: Warning: reference to free variable ‘more-data’
> ;;
> ;; 2. When the compiled version is used interactively:
> ;;
> ;;    Symbol's value as variable is void: data-item

How can the interactive spec use lexically-bound variables outside its
scope, when the interactive spec runs not at function definition time,
but at function invocation time, when those variables will be long
gone?  What is expected from the above code, and why?




This bug report was last modified 2 years and 244 days ago.

Previous Next


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