GNU bug report logs -
#51695
29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue
Previous Next
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
Message #8 received at 51695 <at> debbugs.gnu.org (full text, mbox):
> 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.