[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#51695: 29.0.50; lexical scope closure, interactive spec byte compile
From: |
Eli Zaretskii |
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@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@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?
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue, Emanuel Berg, 2021/11/08
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue,
Eli Zaretskii <=
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue, Stefan Monnier, 2021/11/09
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue, Michael Heerdegen, 2021/11/09
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue, Emanuel Berg, 2021/11/09
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue, Emanuel Berg, 2021/11/09
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue, Michael Heerdegen, 2021/11/10
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue, Emanuel Berg, 2021/11/10
- bug#51695: 29.0.50; lexical scope closure, interactive spec byte compiler warnings/usage issue, Michael Heerdegen, 2021/11/10