From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Kevin Ryde Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 08 Jun 2010 01:56:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 6376@debbugs.gnu.org X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.127596211528806 (code B ref -1); Tue, 08 Jun 2010 01:56:01 +0000 Received: (at submit) by debbugs.gnu.org; 8 Jun 2010 01:55:15 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OLo27-0007UZ-4H for submit@debbugs.gnu.org; Mon, 07 Jun 2010 21:55:15 -0400 Received: from mx10.gnu.org ([199.232.76.166]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OLo25-0007UU-Tr for submit@debbugs.gnu.org; Mon, 07 Jun 2010 21:55:14 -0400 Received: from lists.gnu.org ([199.232.76.165]:36445) by monty-python.gnu.org with esmtps (TLS-1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1OLo22-0003Ah-9Z for submit@debbugs.gnu.org; Mon, 07 Jun 2010 21:55:10 -0400 Received: from [140.186.70.92] (port=52574 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OLo20-0008PJ-Bm for bug-gnu-emacs@gnu.org; Mon, 07 Jun 2010 21:55:09 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-1.9 required=5.0 tests=BAYES_00,RCVD_IN_DNSWL_NONE autolearn=unavailable version=3.3.1 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OLo1y-0008Lj-PM for bug-gnu-emacs@gnu.org; Mon, 07 Jun 2010 21:55:08 -0400 Received: from mailout1-3.pacific.net.au ([61.8.2.210]:60410 helo=mailout1.pacific.net.au) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OLo1y-0008LQ-1q for bug-gnu-emacs@gnu.org; Mon, 07 Jun 2010 21:55:06 -0400 Received: from mailproxy2.pacific.net.au (mailproxy2.pacific.net.au [61.8.2.163]) by mailout1.pacific.net.au (Postfix) with ESMTP id 83DE15A8649 for ; Tue, 8 Jun 2010 11:30:56 +1000 (EST) Received: from blah.blah (ppp287C.dyn.pacific.net.au [61.8.40.124]) by mailproxy2.pacific.net.au (Postfix) with ESMTP id 879E127410 for ; Tue, 8 Jun 2010 11:30:55 +1000 (EST) Received: from gg by blah.blah with local (Exim 4.71) (envelope-from ) id 1OLneM-0002dO-Sf for bug-gnu-emacs@gnu.org; Tue, 08 Jun 2010 11:30:42 +1000 From: Kevin Ryde Date: Tue, 08 Jun 2010 11:30:42 +1000 Message-ID: <87y6eqia4d.fsf@blah.blah> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6, seldom 2.4 (older, 4) X-Spam-Score: -5.6 (-----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -5.6 (-----) I made a mistake with a variable name to add-to-list and wondered if the byte compiler might report (add-to-list 'nosuchvariable ...) as a free variable, similar to the report for (set 'nosuchvariable ...) The few lines below get the desired effect, but might be a bit rough. The separate check-assign is with a view to sharing among set, setq, set-default and maybe others. Something specific for add-to-list would be vaguely reasonable since it's a builtin, but it could be worth trying a general way to flag an arg number as the name of a variable either referenced or assigned. Something like that might also allow "function not known to be defined" for quoted symbol args to mapcar, sort, etc. I suppose this sort of thing might be analysed by elint instead or as well, but the byte compiler has good information about bindings available after macro expansion etc and it's much more often run than elint. (defun byte-compile-check-assign (symbol) (cond ((and (byte-compile-warning-enabled-p 'constants) (byte-compile-const-symbol-p symbol t)) (byte-compile-warn "variable assignment to constant `%s'" symbol)) ((and (byte-compile-warning-enabled-p 'free-vars) (not (memq symbol byte-compile-bound-variables)) (not (memq symbol byte-compile-free-assignments))) (byte-compile-warn "assignment to free variable `%s'" symbol) (push symbol byte-compile-free-assignments)))) (defun byte-compile-varsym1 (form) ;; arg 1 is a symbol which is the name of a variable which must be found ;; eg. (foo 'var ...) (cond ((eq 'quote (car-safe (nth 1 form))) (let ((var (car-safe (cdr (nth 1 form))))) (if (symbolp var) (byte-compile-check-assign var)))) ;; (add-to-list 'nil ...) reaches here as (add-to-list nil ...), ;; call the check so as to report nil as a constant ((null (nth 1 form)) (byte-compile-check-assign nil))) (byte-compile-normal-call form)) (byte-defop-compiler-1 add-to-list byte-compile-varsym1) (byte-defop-compiler-1 add-to-ordered-list byte-compile-varsym1) In GNU Emacs 23.2.1 (i486-pc-linux-gnu, GTK+ Version 2.20.0) of 2010-05-16 on raven, modified by Debian configured using `configure '--build' 'i486-linux-gnu' '--build' 'i486-linux-gnu' '--prefix=/usr' '--sharedstatedir=/var/lib' '--libexecdir=/usr/lib' '--localstatedir=/var/lib' '--infodir=/usr/share/info' '--mandir=/usr/share/man' '--with-pop=yes' '--enable-locallisppath=/etc/emacs23:/etc/emacs:/usr/local/share/emacs/23.2/site-lisp:/usr/local/share/emacs/site-lisp:/usr/share/emacs/23.2/site-lisp:/usr/share/emacs/site-lisp:/usr/share/emacs/23.2/leim' '--with-x=yes' '--with-x-toolkit=gtk' '--with-toolkit-scroll-bars' 'build_alias=i486-linux-gnu' 'CFLAGS=-DDEBIAN -g -O2' 'LDFLAGS=-g' 'CPPFLAGS='' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: en_AU value of $XMODIFIERS: nil locale-coding-system: iso-latin-1-unix default enable-multibyte-characters: t From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Stefan Monnier Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 09 Jun 2010 01:30:03 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Kevin Ryde Cc: 6376@debbugs.gnu.org Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.12760469666487 (code B ref 6376); Wed, 09 Jun 2010 01:30:03 +0000 Received: (at 6376) by debbugs.gnu.org; 9 Jun 2010 01:29:26 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OMA6g-0001ga-6Q for submit@debbugs.gnu.org; Tue, 08 Jun 2010 21:29:26 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.183] helo=ironport2-out.pppoe.ca) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OMA6f-0001gV-6O for 6376@debbugs.gnu.org; Tue, 08 Jun 2010 21:29:25 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: AvsEAMOKDkxFxIwr/2dsb2JhbACeQ3K/b4UWBIxs X-IronPort-AV: E=Sophos;i="4.53,387,1272859200"; d="scan'208";a="67640100" Received: from 69-196-140-43.dsl.teksavvy.com (HELO pastel.home) ([69.196.140.43]) by ironport2-out.pppoe.ca with ESMTP; 08 Jun 2010 21:29:21 -0400 Received: by pastel.home (Postfix, from userid 20848) id EF2598175; Tue, 8 Jun 2010 21:29:20 -0400 (EDT) From: Stefan Monnier Message-ID: References: <87y6eqia4d.fsf@blah.blah> Date: Tue, 08 Jun 2010 21:29:20 -0400 In-Reply-To: <87y6eqia4d.fsf@blah.blah> (Kevin Ryde's message of "Tue, 08 Jun 2010 11:30:42 +1000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -1.9 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -1.9 (-) > I made a mistake with a variable name to add-to-list and wondered if the > byte compiler might report > (add-to-list 'nosuchvariable ...) > as a free variable, similar to the report for I use the code below for add-hook: (byte-defop-compiler-1 remove-hook byte-compile-add-hook) (defun byte-compile-add-hook (form) (let ((sym (car-safe (cdr-safe form)))) (when (and (eq 'quote (car-safe sym)) (setq sym (car-safe (cdr sym))) (symbolp sym)) ;; Gross hack: We want to do the sanity checks just as we would for ;; a setq so we first do a setq and then pop the byte-code that was ;; just pushed by byte-compile-variable-ref. (let ((byte-compile-output byte-compile-output) (byte-compile-maxdepth byte-compile-maxdepth) (byte-compile-depth byte-compile-depth)) (byte-compile-variable-ref 'byte-varset sym))) (byte-compile-normal-call form))) so I'm in favor of such a change, but it would need to be cleaned up such that your byte-compile-check-assign is also used for byte-compile-variable-ref (i.e. the code should be hoisted out of byte-compile-variable-ref). Also, note that add-to-list is not only a "varset" but also a "varref" (it reads the var before assigning to it). Stefan From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Kevin Ryde Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 12 Jun 2010 23:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: 6376@debbugs.gnu.org Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.127638433324819 (code B ref 6376); Sat, 12 Jun 2010 23:13:02 +0000 Received: (at 6376) by debbugs.gnu.org; 12 Jun 2010 23:12:13 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONZs4-0006SG-JQ for submit@debbugs.gnu.org; Sat, 12 Jun 2010 19:12:12 -0400 Received: from mailout2-15.pacific.net.au ([125.255.80.142] helo=mailout2.pacific.net.au) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1ONZs0-0006Ry-T4 for 6376@debbugs.gnu.org; Sat, 12 Jun 2010 19:12:10 -0400 Received: from mailproxy1.pacific.net.au (mailproxy1.pacific.net.au [61.8.2.162]) by mailout2.pacific.net.au (Postfix) with ESMTP id 089761EA8B6; Sun, 13 Jun 2010 09:12:03 +1000 (EST) Received: from blah.blah (ppp2DB1.dyn.pacific.net.au [61.8.45.177]) by mailproxy1.pacific.net.au (Postfix) with ESMTP id 1F7558C03; Sun, 13 Jun 2010 09:12:01 +1000 (EST) Received: from gg by blah.blah with local (Exim 4.71) (envelope-from ) id 1ONZrX-00055F-Qm; Sun, 13 Jun 2010 09:11:39 +1000 From: Kevin Ryde References: <87y6eqia4d.fsf@blah.blah> Date: Sun, 13 Jun 2010 09:11:39 +1000 In-Reply-To: (Stefan Monnier's message of "Tue, 08 Jun 2010 21:29:20 -0400") Message-ID: <871vcbluc4.fsf@blah.blah> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -2.7 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.6 (---) Stefan Monnier writes: > > add-hook I was thinking of excusing add-hook and remove-hook because they can work on an unbound variable, and might quite often do so if tying in to something external. > add-to-list is not only a "varset" but also a "varref" I thought to show the message about setting in that case. For the unboundness check the two only differ in the wording I think. From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Kevin Ryde Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 06 Aug 2010 23:46:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 6376@debbugs.gnu.org Cc: Stefan Monnier Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.12811383205224 (code B ref 6376); Fri, 06 Aug 2010 23:46:01 +0000 Received: (at 6376) by debbugs.gnu.org; 6 Aug 2010 23:45:20 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OhWbI-0001MD-8h for submit@debbugs.gnu.org; Fri, 06 Aug 2010 19:45:20 -0400 Received: from mailout1-7.pacific.net.au ([61.8.2.214] helo=mailout1.pacific.net.au) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OhWbE-0001M7-Te for 6376@debbugs.gnu.org; Fri, 06 Aug 2010 19:45:18 -0400 Received: from mailproxy2.pacific.net.au (mailproxy2.pacific.net.au [61.8.2.163]) by mailout1.pacific.net.au (Postfix) with ESMTP id CDC915D077D; Sat, 7 Aug 2010 09:45:49 +1000 (EST) Received: from blah.blah (ppp2335.dyn.pacific.net.au [61.8.35.53]) by mailproxy2.pacific.net.au (Postfix) with ESMTP id C08FC27406; Sat, 7 Aug 2010 09:45:48 +1000 (EST) Received: from gg by blah.blah with local (Exim 4.72) (envelope-from ) id 1OhWbf-000204-Ld; Sat, 07 Aug 2010 09:45:43 +1000 From: Kevin Ryde References: <87y6eqia4d.fsf@blah.blah> Date: Sat, 07 Aug 2010 09:45:43 +1000 In-Reply-To: (Stefan Monnier's message of "Tue, 08 Jun 2010 21:29:20 -0400") Message-ID: <87zkwzs3tk.fsf@blah.blah> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-Spam-Score: -3.6 (---) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.5 (---) --=-=-= I got a bit further to these few lines. Not quite ready yet, but getting closer. The byte-compile-check-var is more or less a break-out of the checks in byte-compile-variable-ref. add-hook and remove-hook end up with checks against non-variables, but they don't demand a bound variable. I suppose they could helpfully also notice undefined functions in their second arg too. You'd be tempted to have some sort of general arg-type description for the builtin funcs rather than doing checks plus "normal-call" for each. --=-=-= Content-Type: application/emacs-lisp Content-Disposition: inline; filename=bytecomp-add-to-list.el Content-Transfer-Encoding: quoted-printable (require 'bytecomp) (defun byte-compile-check-var (symbol base-op) ;; SYMBOL is the name of a variable. BASE-OP is one of the following ;; according to what's being done to the variable. ;; 'byte-varref ;; 'byte-varset ;; 'byte-varbind ;; 'varset-def -- set, defining if not already (eg. add-hook) ;; Emit a warning if SYMBOL is unbound, or if it's a constant being set or ;; bound. ;; (cond ((and (not (symbolp symbol)) ;; `constants' warning includes all non-variables (byte-compile-warning-enabled-p 'constants)) (byte-compile-warn "%s non-variable `%S'" (assoc-default base-op '((byte-varref . "reference to") (byte-varset . "assignment to") (varset-def . "assignment to") (byte-varbind . "let-bind of")) nil base-op) symbol)) ((and (not (eq base-op 'byte-varref)) (byte-compile-warning-enabled-p 'constants) (byte-compile-const-symbol-p symbol t)) (byte-compile-warn "%s constant `%S'" (assoc-default base-op '((byte-varset . "variable assignment to") (varset-def . "variable assignment to") (byte-varbind . "let-bind of")) nil base-op) symbol)) ((and (not (memq base-op '(varset-def byte-varbind))) (byte-compile-warning-enabled-p 'free-vars) (not (memq symbol byte-compile-bound-variables)) (not (memq symbol byte-compile-free-assignments))) (byte-compile-warn "%s to free variable `%S'" (assoc-default base-op '((byte-varref . "reference to") (byte-varset . "assignment to"= )) nil base-op) symbol) (push symbol byte-compile-free-assignments)))) (defun byte-compile-check-argvar (arg base-op) ;; ARG is a function argument form which is supposed to evaluate to a ;; symbol naming a variable. If ARG is (quote FOO) or :foo then check ;; that it's a bound variable per bytecomp-check-var. If ARG is ;; self-evaluating like nil, t, strings, etc then pass to the check too, ;; to possibly report assignment to a constant. Code like (quote nil) or ;; (quote "foo") reaches this point as plain nil or t. ;; (cond ((eq 'quote (car-safe arg)) (byte-compile-check-var (car-safe (cdr arg)) base-op)) ((or (memq arg '(nil t)) ;; anything except a symbol or list is self-evaluating (not (or (symbolp arg) (consp arg)))) (byte-compile-check-var arg base-op)))) (defun byte-compile-addtolist (form) ;; first arg is the name of a variable being changed, eg. (foo 'var ...) (if (>=3D (safe-length form) 2) (byte-compile-check-argvar (cadr form) 'byte-varset)) (byte-compile-normal-call form)) (byte-defop-compiler-1 add-to-list byte-compile-addtolist) (byte-defop-compiler-1 add-to-ordered-list byte-compile-addtolist) (defun byte-compile-addremhook (form) ;; first arg is the name of a variable being changed, eg. (foo 'var ...) ;; only=20 (if (>=3D (safe-length form) 2) (byte-compile-check-argvar (cadr form) 'varset-def)) (byte-compile-normal-call form)) (byte-defop-compiler-1 add-hook byte-compile-addremhook) (byte-defop-compiler-1 remove-hook byte-compile-addremhook) --=-=-=-- From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Stefan Monnier Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 10 Aug 2010 09:12:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Kevin Ryde Cc: 6376@debbugs.gnu.org Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.128143149627402 (code B ref 6376); Tue, 10 Aug 2010 09:12:01 +0000 Received: (at 6376) by debbugs.gnu.org; 10 Aug 2010 09:11:36 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oikrw-00077v-IE for submit@debbugs.gnu.org; Tue, 10 Aug 2010 05:11:36 -0400 Received: from impaqm3.telefonica.net ([213.4.138.3]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oikrv-00077q-Ai for 6376@debbugs.gnu.org; Tue, 10 Aug 2010 05:11:35 -0400 Received: from IMPmailhost5.adm.correo ([10.20.102.126]) by IMPaqm3.telefonica.net with bizsmtp id sXBk1e00m2jdgqJ3PZCJuQ; Tue, 10 Aug 2010 11:12:18 +0200 Received: from ceviche.home ([83.40.4.203]) by IMPmailhost5.adm.correo with BIZ IMP id sZCH1e00P4NokFF1lZCJJe; Tue, 10 Aug 2010 11:12:18 +0200 X-Brightmail-Tracker: AAAAAA== X-TE-authinfo: authemail="monnier$movistar.es" |auth_email="monnier@movistar.es" X-TE-AcuTerraCos: auth_cuTerraCos="cosuitnetc01" Received: by ceviche.home (Postfix, from userid 20848) id 8910766138; Tue, 10 Aug 2010 11:12:17 +0200 (CEST) From: Stefan Monnier Message-ID: References: <87y6eqia4d.fsf@blah.blah> <87zkwzs3tk.fsf@blah.blah> Date: Tue, 10 Aug 2010 11:12:17 +0200 In-Reply-To: <87zkwzs3tk.fsf@blah.blah> (Kevin Ryde's message of "Sat, 07 Aug 2010 09:45:43 +1000") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -2.2 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -2.2 (--) > I got a bit further to these few lines. Not quite ready yet, but > getting closer. The byte-compile-check-var is more or less a break-out > of the checks in byte-compile-variable-ref. Could you send it as a patch, please. Which part(s) so you think still need work? Stefan From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Kevin Ryde Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 21 Sep 2010 01:33:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Stefan Monnier Cc: 6376@debbugs.gnu.org Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.12850327777859 (code B ref 6376); Tue, 21 Sep 2010 01:33:01 +0000 Received: (at 6376) by debbugs.gnu.org; 21 Sep 2010 01:32:57 +0000 Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oxrj7-00022i-4d for submit@debbugs.gnu.org; Mon, 20 Sep 2010 21:32:57 -0400 Received: from mailout2-8.pacific.net.au ([61.8.2.231] helo=mailout2.pacific.net.au) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1Oxrj4-00022d-0p for 6376@debbugs.gnu.org; Mon, 20 Sep 2010 21:32:55 -0400 Received: from mailproxy1.pacific.net.au (mailproxy1.pacific.net.au [61.8.2.162]) by mailout2.pacific.net.au (Postfix) with ESMTP id 3AE2729C357; Tue, 21 Sep 2010 11:35:23 +1000 (EST) Received: from blah.blah (ppp204C.dyn.pacific.net.au [61.8.32.76]) by mailproxy1.pacific.net.au (Postfix) with ESMTP id 466EB8C12; Tue, 21 Sep 2010 11:35:19 +1000 (EST) Received: from gg by blah.blah with local (Exim 4.72) (envelope-from ) id 1Oxrl1-0000H0-8k; Tue, 21 Sep 2010 11:34:55 +1000 From: Kevin Ryde References: <87y6eqia4d.fsf@blah.blah> <87zkwzs3tk.fsf@blah.blah> Date: Tue, 21 Sep 2010 11:34:55 +1000 In-Reply-To: (Stefan Monnier's message of "Tue, 10 Aug 2010 11:12:17 +0200") Message-ID: <87bp7r6fr4.fsf@blah.blah> User-Agent: Gnus/5.110011 (No Gnus v0.11) Emacs/23.2 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii X-Spam-Score: -3.5 (---) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: debbugs-submit-bounces@debbugs.gnu.org Errors-To: debbugs-submit-bounces@debbugs.gnu.org X-Spam-Score: -3.5 (---) Stefan Monnier writes: > > Could you send it as a patch, please. I suppose I should get my cvs head checkout sorted so as to be able to test on the current code. That's likely to take a while :-( > Which part(s) so you think still need work? I thought to make room for checking the func arg to add-hook and friends. But checking the variables might be enough to start with. From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 19 Nov 2020 04:06:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Kevin Ryde Cc: 6376@debbugs.gnu.org, Stefan Monnier Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.16057587284419 (code B ref 6376); Thu, 19 Nov 2020 04:06:01 +0000 Received: (at 6376) by debbugs.gnu.org; 19 Nov 2020 04:05:28 +0000 Received: from localhost ([127.0.0.1]:37457 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kfbCF-00018u-AA for submit@debbugs.gnu.org; Wed, 18 Nov 2020 23:05:28 -0500 Received: from mail-ed1-f45.google.com ([209.85.208.45]:42971) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kfbC8-00018K-7r for 6376@debbugs.gnu.org; Wed, 18 Nov 2020 23:05:21 -0500 Received: by mail-ed1-f45.google.com with SMTP id v22so4347616edt.9 for <6376@debbugs.gnu.org>; Wed, 18 Nov 2020 20:05:16 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:user-agent :mime-version:date:message-id:subject:to:cc; bh=6Ee/miZga9ZgQ4+irEP7qiu7RAw75dyjXdUXPqBjbYs=; b=Mccu04/K6dT2k+GkkZVtgqktCiI82tuVHJ9JEY8VBXdh74qlCLIf5+WSC7GSoiwFuq ZROitASttIQ0+GHPT2xaM8OpwjS2oofrhosbMQcXzK2J13MgzUSHiMG5KlnD9xjcJStG 1nJFhtHzCXOFgaZhR3+agFZOOJMrXuvb9IlYqMuhoFd4xuCV9GTDrHeUwTP5zXvLh7+3 WfyZ+8TuzXeBNG25xg6LkWIx4zxnvf4dZ1EULSw+fT2ppkuq9vhcGH+ZuLBnb343XEyJ VzBtGFStME/1OxBgvrnS3jC0Sq1TK8aud5egDeHehWai1Qjb2qk6rCwxJsAJh2j/t+lR J4HQ== X-Gm-Message-State: AOAM53187VddWoSK59u9UC7znugrS9R8L+PjWn3AE3A31f8LPaGkcA0C uJ+zu8V1eXNirBEyDUgHbZL+rwxTZcaA5dWv40KRX/l8EZo= X-Google-Smtp-Source: ABdhPJzmmusz9EIumB6JZpXfLoZxHb5U8uAfoe9M+Qcv5p54zqDqtlpTMAaQHQr/UK3dBqMGjF/Eurvecc0N5HK479M= X-Received: by 2002:a50:9f61:: with SMTP id b88mr30184243edf.282.1605758710681; Wed, 18 Nov 2020 20:05:10 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Wed, 18 Nov 2020 20:05:10 -0800 From: Stefan Kangas In-Reply-To: <87zkwzs3tk.fsf@blah.blah> (Kevin Ryde's message of "Sat, 07 Aug 2010 09:45:43 +1000") References: <87y6eqia4d.fsf@blah.blah> <87zkwzs3tk.fsf@blah.blah> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.50 (gnu/linux) MIME-Version: 1.0 Date: Wed, 18 Nov 2020 20:05:10 -0800 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Kevin Ryde writes: > I got a bit further to these few lines. Not quite ready yet, but > getting closer. The byte-compile-check-var is more or less a break-out > of the checks in byte-compile-variable-ref. > > add-hook and remove-hook end up with checks against non-variables, but > they don't demand a bound variable. I suppose they could helpfully also > notice undefined functions in their second arg too. You'd be tempted to > have some sort of general arg-type description for the builtin funcs > rather than doing checks plus "normal-call" for each. (That was 10 years ago.) This change looks useful to me. Any chance you could fix it up and send it as a patch? > (require 'bytecomp) > > (defun byte-compile-check-var (symbol base-op) > ;; SYMBOL is the name of a variable. BASE-OP is one of the following > ;; according to what's being done to the variable. > ;; 'byte-varref > ;; 'byte-varset > ;; 'byte-varbind > ;; 'varset-def -- set, defining if not already (eg. add-hook) > ;; Emit a warning if SYMBOL is unbound, or if it's a constant being set or > ;; bound. > ;; > (cond ((and (not (symbolp symbol)) > ;; `constants' warning includes all non-variables > (byte-compile-warning-enabled-p 'constants)) > (byte-compile-warn "%s non-variable `%S'" > (assoc-default base-op > '((byte-varref . "reference to") > (byte-varset . "assignment to") > (varset-def . "assignment to") > (byte-varbind . "let-bind of")) > nil base-op) > symbol)) > > ((and (not (eq base-op 'byte-varref)) > (byte-compile-warning-enabled-p 'constants) > (byte-compile-const-symbol-p symbol t)) > (byte-compile-warn "%s constant `%S'" > (assoc-default > base-op > '((byte-varset . "variable assignment to") > (varset-def . "variable assignment to") > (byte-varbind . "let-bind of")) > nil base-op) > symbol)) > > ((and (not (memq base-op '(varset-def byte-varbind))) > (byte-compile-warning-enabled-p 'free-vars) > (not (memq symbol byte-compile-bound-variables)) > (not (memq symbol byte-compile-free-assignments))) > (byte-compile-warn "%s to free variable `%S'" > (assoc-default base-op > '((byte-varref . "reference to") > (byte-varset . "assignment to")) > nil base-op) > symbol) > (push symbol byte-compile-free-assignments)))) > > (defun byte-compile-check-argvar (arg base-op) > ;; ARG is a function argument form which is supposed to evaluate to a > ;; symbol naming a variable. If ARG is (quote FOO) or :foo then check > ;; that it's a bound variable per bytecomp-check-var. If ARG is > ;; self-evaluating like nil, t, strings, etc then pass to the check too, > ;; to possibly report assignment to a constant. Code like (quote nil) or > ;; (quote "foo") reaches this point as plain nil or t. > ;; > (cond ((eq 'quote (car-safe arg)) > (byte-compile-check-var (car-safe (cdr arg)) base-op)) > ((or (memq arg '(nil t)) > ;; anything except a symbol or list is self-evaluating > (not (or (symbolp arg) > (consp arg)))) > (byte-compile-check-var arg base-op)))) > > (defun byte-compile-addtolist (form) > ;; first arg is the name of a variable being changed, eg. (foo 'var ...) > (if (>= (safe-length form) 2) > (byte-compile-check-argvar (cadr form) 'byte-varset)) > (byte-compile-normal-call form)) > (byte-defop-compiler-1 add-to-list byte-compile-addtolist) > (byte-defop-compiler-1 add-to-ordered-list byte-compile-addtolist) > > (defun byte-compile-addremhook (form) > ;; first arg is the name of a variable being changed, eg. (foo 'var ...) > ;; only > (if (>= (safe-length form) 2) > (byte-compile-check-argvar (cadr form) 'varset-def)) > (byte-compile-normal-call form)) > (byte-defop-compiler-1 add-hook byte-compile-addremhook) > (byte-defop-compiler-1 remove-hook byte-compile-addremhook) From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Stefan Kangas Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 20 Nov 2020 05:08:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: 6376@debbugs.gnu.org Cc: Stefan Monnier Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.160584882820798 (code B ref 6376); Fri, 20 Nov 2020 05:08:02 +0000 Received: (at 6376) by debbugs.gnu.org; 20 Nov 2020 05:07:08 +0000 Received: from localhost ([127.0.0.1]:41600 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kfydY-0005PO-1Y for submit@debbugs.gnu.org; Fri, 20 Nov 2020 00:07:08 -0500 Received: from mail-ed1-f54.google.com ([209.85.208.54]:35863) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1kfydW-0005Ot-18 for 6376@debbugs.gnu.org; Fri, 20 Nov 2020 00:07:06 -0500 Received: by mail-ed1-f54.google.com with SMTP id m16so8245635edr.3 for <6376@debbugs.gnu.org>; Thu, 19 Nov 2020 21:07:06 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:in-reply-to:references:mime-version:date :message-id:subject:to:cc; bh=95BLT3pvRiYHcONa0doo4WitVMTIvVgaoSZj25ZI0/A=; b=R6+95U6G501xGpw37LVZM0+79VIow8xNA8ReNrC2sMwThgQ6YEpzRpBBVKAZftCq50 iC11bikDrqFmeS2Hf26NQMMUky+ACw3gUADoW7sWlcZv2uS4qCrkl/qQBCyE9Dh6M6lC R3felfN/+Upw9kKL18D0C7ymqSWbN0DWBIavLV9M0kIRzMbC2OknLhrFw7CjM29iWS0d y/XJ5Nsd5EfnmmZXNy3Tb6szZuAYaExsarpvFErWPC9FGLtqaJXc5SsilcsBK90gOrQS 8omteiFT61W6htkFf4VibfxdlY/e9104Q/HrsorJfk9dglbYG7pu+JOdnRJEKivNECCT bsHQ== X-Gm-Message-State: AOAM530gluta433mZlGYSIsj1u9DfNtT3msRmxyZdxUgJX1fFv54YWoO yyjeOfkwnB1UJYOpoovgluPKnRyVEJOobGZiBzaHIthu X-Google-Smtp-Source: ABdhPJyKy4w2+LehX5uvPODC6zK77CXgLLEDFsnJqQjNhKLACktD2xPvMD7PX1ZCCQR/m/nVultlttnNVvDo9Stv/lw= X-Received: by 2002:a50:bb25:: with SMTP id y34mr33071288ede.249.1605848820060; Thu, 19 Nov 2020 21:07:00 -0800 (PST) Received: from 753933720722 named unknown by gmailapi.google.com with HTTPREST; Thu, 19 Nov 2020 21:06:59 -0800 From: Stefan Kangas In-Reply-To: References: <87y6eqia4d.fsf@blah.blah> <87zkwzs3tk.fsf@blah.blah> MIME-Version: 1.0 Date: Thu, 19 Nov 2020 21:06:59 -0800 Message-ID: Content-Type: text/plain; charset="UTF-8" X-Spam-Score: 0.5 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.5 (/) Stefan Kangas writes: > This change looks useful to me. Any chance you could fix it up and send > it as a patch? The email bounced, so it seems like someone else will have to continue from here. From debbugs-submit-bounces@debbugs.gnu.org Mon Jan 31 11:58:39 2022 Received: (at control) by debbugs.gnu.org; 31 Jan 2022 16:58:39 +0000 Received: from localhost ([127.0.0.1]:40507 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nEa0k-0001iz-UV for submit@debbugs.gnu.org; Mon, 31 Jan 2022 11:58:39 -0500 Received: from quimby.gnus.org ([95.216.78.240]:47914) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nEa0i-0001ii-IL for control@debbugs.gnu.org; Mon, 31 Jan 2022 11:58:37 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Subject:From:To:Message-Id:Date:Sender:Reply-To:Cc: MIME-Version:Content-Type:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References:List-Id:List-Help:List-Unsubscribe: List-Subscribe:List-Post:List-Owner:List-Archive; bh=9XTxeYJabJ0b5FIGfpZ4ipZZC4WFz/GzGS1pvOPYSNE=; b=JmR7gjEYYU/LWDKmZge4TZZG+O OZtTQhwG0ayOm6kuzrDMR5NZe2jYxF/UHg5t/m0KeRtLAinmPytb8O+RD+MS4eeQIDgUVp44PoG8l x6tBPWFNZQLDmLaqERJRrO+2KmWih2aGgUfeb2rWFBEHoRR3FWVMBf13ogl4aI/VXWr4=; Received: from [84.212.220.105] (helo=giant) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nEa0Z-0004fb-Ts for control@debbugs.gnu.org; Mon, 31 Jan 2022 17:58:30 +0100 Date: Mon, 31 Jan 2022 17:58:26 +0100 Message-Id: <87mtjbzvt9.fsf@gnus.org> To: control@debbugs.gnu.org From: Lars Ingebrigtsen Subject: control message for bug #6376 X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: close 6376 quit Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: control X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) close 6376 quit From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Lars Ingebrigtsen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 31 Jan 2022 17:00:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Kevin Ryde Cc: 6376@debbugs.gnu.org Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.16436483436723 (code B ref 6376); Mon, 31 Jan 2022 17:00:02 +0000 Received: (at 6376) by debbugs.gnu.org; 31 Jan 2022 16:59:03 +0000 Received: from localhost ([127.0.0.1]:40512 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nEa15-0001jg-4L for submit@debbugs.gnu.org; Mon, 31 Jan 2022 11:59:03 -0500 Received: from quimby.gnus.org ([95.216.78.240]:47916) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nEa0z-0001jF-2t for 6376@debbugs.gnu.org; Mon, 31 Jan 2022 11:58:57 -0500 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org; s=20200322; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID :In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe: List-Post:List-Owner:List-Archive; bh=C+wda9EKOjB30aT0lLvj1yprBF9Jmf/4nnc0NFtuPdU=; b=vQ/VTAztoslQzM7lk9izKkCzEG L19sY6mWupLQGq0zjbLHprQKR6nYq2n0Y/hJu9zSERVrbjwyYTtzdI8ZUYgt9Qe2MGBe0oiRZjxJL bYZjZaZVfGFYRr2SP/zhj5lCuRBie3khZiV5k97LGwULuQ0l+jotwZ3VNFOi+heudtZ4=; Received: from [84.212.220.105] (helo=giant) by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1nEa0Q-0004fW-IH; Mon, 31 Jan 2022 17:58:23 +0100 From: Lars Ingebrigtsen References: <87y6eqia4d.fsf@blah.blah> X-Now-Playing: Nina Simone's _Little Girl Blue_: "You'll Never Walk Alone" Date: Mon, 31 Jan 2022 17:58:16 +0100 In-Reply-To: <87y6eqia4d.fsf@blah.blah> (Kevin Ryde's message of "Tue, 08 Jun 2010 11:30:42 +1000") Message-ID: <87o83rzvtj.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org", has NOT identified this incoming email as spam. The original message has been attached to this so you can view it or label similar future email. If you have any questions, see @@CONTACT_ADDRESS@@ for details. Content preview: Kevin Ryde writes: > I made a mistake with a variable name to add-to-list and wondered if the > byte compiler might report > > (add-to-list 'nosuchvariable ...) > > as a free variable, similar to the report for > > (set [...] Content analysis details: (-2.9 points, 5.0 required) pts rule name description ---- ---------------------- -------------------------------------------------- -1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP -1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1% [score: 0.0000] X-Spam-Score: -2.3 (--) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -3.3 (---) Kevin Ryde writes: > I made a mistake with a variable name to add-to-list and wondered if the > byte compiler might report > > (add-to-list 'nosuchvariable ...) > > as a free variable, similar to the report for > > (set 'nosuchvariable ...) (I'm going through old bug reports that unfortunately weren't resolved at the time.) I tried this byte-compiling such a file in Emacs 29, and I got: Compiling file /tmp/foo.el at Mon Jan 31 17:56:17 2022 foo.el:2:15: Warning: reference to free variable =E2=80=98nosuchvariable=E2= =80=99 foo.el:2:15: Warning: assignment to free variable =E2=80=98nosuchvariable= =E2=80=99 So I guess it's been fixed at some point in the decade since this was reported, and I'm therefore closing this bug report. (If there's more to be done, please respond to the debbugs address and we'll reopen.) --=20 (domestic pets only, the antidote for overdose, milk.) bloggy blog: http://lars.ingebrigtsen.no From unknown Tue Aug 19 01:58:42 2025 X-Loop: help-debbugs@gnu.org Subject: bug#6376: 23.2; byte compile add-to-list report free variable Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 01 Feb 2022 23:33:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6376 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: To: Lars Ingebrigtsen Cc: 6376@debbugs.gnu.org Received: via spool by 6376-submit@debbugs.gnu.org id=B6376.16437583246762 (code B ref 6376); Tue, 01 Feb 2022 23:33:02 +0000 Received: (at 6376) by debbugs.gnu.org; 1 Feb 2022 23:32:04 +0000 Received: from localhost ([127.0.0.1]:50887 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nF2d1-0001l0-R3 for submit@debbugs.gnu.org; Tue, 01 Feb 2022 18:32:03 -0500 Received: from mout.web.de ([212.227.17.12]:41567) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nF2d0-0001kT-FB for 6376@debbugs.gnu.org; Tue, 01 Feb 2022 18:32:03 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=dbaedf251592; t=1643758316; bh=pxVQffgsq6S6QxUlnSsYU/fAq1MXDLYTTGuotwBepZE=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date; b=HOp4BMw3auAdp6iOAwhnRZt3lsXhPu7f0N7sX9HeAWI4gUmRgOo3XGksJ9Ft4pvZx PZii+hQF31o1aVS0I227H94zdE5V6/dl6h7zccc6Nzw+0JGQUAxcbHFeP/AFjDE9GH 7H2upS75ReNh6Q4uWdYhdz69rLNbrikjgBf/E/Hc= X-UI-Sender-Class: c548c8c5-30a9-4db5-a2e7-cb6cb037b8f9 Received: from drachen.dragon ([84.57.248.31]) by smtp.web.de (mrweb106 [213.165.67.124]) with ESMTPSA (Nemesis) id 1N1d7i-1mD5640Khk-0122bd; Wed, 02 Feb 2022 00:31:56 +0100 From: Michael Heerdegen In-Reply-To: <87o83rzvtj.fsf@gnus.org> (Lars Ingebrigtsen's message of "Mon, 31 Jan 2022 17:58:16 +0100") References: <87y6eqia4d.fsf@blah.blah> <87o83rzvtj.fsf@gnus.org> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Date: Wed, 02 Feb 2022 00:31:55 +0100 Message-ID: <877dae2mfo.fsf@web.de> MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable X-Provags-ID: V03:K1:7jK4N14Q2EjzdFAlwkfthJeixTJnpUQqttgDFHW535Y5vCj76c/ C2YCIX2TXF3KyQ3GS312/E0RqatApeS43SEg0dGkzKJXIcO55/P7/sh09K7VRRuWah4kN1I vEmN2qDm2RBO3bJ/qb0H21i7SwesfmBsmxDzSNDBmVrBOkX5KeOqMGric+uAeGBL/Ukn08y gFKaP3XwfXCy1oxH0OztA== X-Spam-Flag: NO X-UI-Out-Filterresults: notjunk:1;V03:K0:IP2dTYP6Uvc=:nsRAcTlHXws2+m781qygoB Uu9zOXhQB9Ue0P50+9XemioqlZKSEdx3FNohnE3oabHwdqHJ0WACj1Mwc/X4UA1vCFbwW1fli BBYoZMysMQBXRkh5d6nCxYBwzeOeRWJwBLVprlgFj9rYBpyjb78t0gUdxZvquYnvIXaiqcLij kdS1SwT34xHX1ZxuIu29L++UcmMa109vkDrGc0C1RHLJIFaquN83sG/bj24HFRXMSdbaJArsZ 2Ul3147g4LGZ4jAK7xy33P2irqiX3Pr2BLyCaBvE55pYPHrgzKIOzx+mAbpfnHv5WWXpeXgDE BCMLZDvjUos3ttJXqo8VUSFrosibeAiM0OOeoiy13oLCV1awoUY7DLFSF+yBe2NvCZcfzQttW 1A5XQO2HQ/P5nITzFOQlDaBt2ZQRXtDnwLrE5ssWuFbbyFlKY/FH/Zmpc+rGhKgxCkxftXMr3 7cWB+IT9tRxHaKumvmXgLjFSToejoSUDILP/yOYFM5y4X6stoZym4NZnorIH8ukzs/a3QKEUK V5Sji6A8J0t4lRWpLAFEyRhbaB4CvDGXeqGXewY+DaYs0Z2zGbf3V+bzW0pbkwaFx+tUlaaxz N0eeMykLGxedY0lIc7QSpwkPQvQoZ7eEx0yulmI+E8R0bHlUPsW97sX8Z2d6LFW7nCVpdHLyV Nr6kjzWIRMIWj7fh1rN2kfjJa6Zt4lYGmTl2XaQ+dNib3zc3n+MhmwEktsgNI59ZMx4N3qgH4 hgAVXFY/pe3rzfMP1w6Wp8+u7i3g/nocywMyLa2jTY3RtC6hptOKodXXsM1x5g9Gc360sPHQg pm2JS8JIN6sHir5+Nmf59RXwyOeUEs4fuMVrruM5JrBYQwWOsY/2GFQaYBEVwq5mZ5NcKPCFO pc59QPq89Qlq7IPgf042+xOvPmGmXO7om5vULjIziI+jGkMiktMPrIMTzIOVOqQc6pZod8IiE UmRmqDy8336xdpryn3cb8dA8pMHUkud5KBME1yxcUy5SshmALa/0ix8K25fank6QVQlXDRSut 4j5yl/JfhzMPVdslXrsS1QbVftiXFemtmQSKFkhsQVoz+HUlYPZtWxEx/CZnWSax54uXTJz6v ybW5dm0ZyBNzLQ= X-Spam-Score: -0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -1.0 (-) Lars Ingebrigtsen writes: > I tried this byte-compiling such a file in Emacs 29, and I got: > > Compiling file /tmp/foo.el at Mon Jan 31 17:56:17 2022 > foo.el:2:15: Warning: reference to free variable =E2=80=98nosuchvariable= =E2=80=99 > foo.el:2:15: Warning: assignment to free variable =E2=80=98nosuchvariable= =E2=80=99 > > So I guess it's been fixed at some point in the decade since this was > reported [...] The function got a compiler macro 2013 (bfa3acd65b), and the expansion is either a `push' or a `setq' form (which support generating free variable warnings), so this should have fixed this issue. Michael.