From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.bugs Subject: bug#59057: Emacs 29. Byte compiler sometimes forgets about a defvar. Date: Sat, 5 Nov 2022 18:46:49 +0000 Message-ID: Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="19571"; mail-complaints-to="usenet@ciao.gmane.io" To: 59057@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Nov 05 19:47:30 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1orOCY-0004uR-D8 for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 05 Nov 2022 19:47:30 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1orOCF-0005GE-Cv; Sat, 05 Nov 2022 14:47:13 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1orOC8-0005Ef-08 for bug-gnu-emacs@gnu.org; Sat, 05 Nov 2022 14:47:04 -0400 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1orOC6-0003Tv-TA for bug-gnu-emacs@gnu.org; Sat, 05 Nov 2022 14:47:03 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1orOC6-0004rp-D3 for bug-gnu-emacs@gnu.org; Sat, 05 Nov 2022 14:47:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 05 Nov 2022 18:47:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 59057 X-GNU-PR-Package: emacs X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.166767402118704 (code B ref -1); Sat, 05 Nov 2022 18:47:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 5 Nov 2022 18:47:01 +0000 Original-Received: from localhost ([127.0.0.1]:58021 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1orOC5-0004rZ-DY for submit@debbugs.gnu.org; Sat, 05 Nov 2022 14:47:01 -0400 Original-Received: from lists.gnu.org ([209.51.188.17]:57544) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1orOBz-0004rM-Jq for submit@debbugs.gnu.org; Sat, 05 Nov 2022 14:46:59 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1orOBz-0005EH-El for bug-gnu-emacs@gnu.org; Sat, 05 Nov 2022 14:46:55 -0400 Original-Received: from mx3.muc.de ([193.149.48.5]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1orOBx-0003TT-GJ for bug-gnu-emacs@gnu.org; Sat, 05 Nov 2022 14:46:55 -0400 Original-Received: (qmail 89263 invoked by uid 3782); 5 Nov 2022 19:46:50 +0100 Original-Received: from acm.muc.de (p4fe153f5.dip0.t-ipconnect.de [79.225.83.245]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Sat, 05 Nov 2022 19:46:50 +0100 Original-Received: (qmail 7392 invoked by uid 1000); 5 Nov 2022 18:46:49 -0000 Content-Disposition: inline X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de Received-SPF: pass client-ip=193.149.48.5; envelope-from=acm@muc.de; helo=mx3.muc.de X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: "bug-gnu-emacs" Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:247151 Archived-At: Hello, Emacs. With an up to date master version, start emacs -Q. (i) Visit bug-compile-defvar.el, which looks like this: ######################################################################### ;; -*- lexical-binding: t -*- (eval-and-compile (defun version-check () (>= emacs-major-version 28))) (defmacro acm-defvar (var) `(eval-when-compile ; (when (version-check) (defvar ,var) (setq ,var emacs-major-version) ; ) )) (acm-defvar l-s-p) (eval-when-compile (message "\nl-s-p is %sin byte-compile-bound-variables" (if (memq 'l-s-p byte-compile-bound-variables) "" "not ")) (message "l-s-p is %sbound" (if (boundp 'l-s-p) "" "not "))) (defun acm-bind-l-s-p () (let ((l-s-p emacs-major-version)) (message "Nothing much\n"))) ######################################################################### The idea here is that the macro acm-defvar itself calls defvar, creating a variable. (ii) Do M-x byte-compile-file RET ~/bug-compile-defvar.el. (iii) Note that this works properly, giving out the two messages, the first of which confirms that the new variable l-s-p has been entered into the list byte-compile-bound-variables. (iv) Edit the buffer, removing both single semicolon comment markers, and save the file. (v) Do M-x byte-compile-file RET ~/bug-compile-defvar.el again. (vi) Note that now the new variable is NOT in byte-compile-bound-variables. This is a bug. (vii) Note also that there is a spurious compiler warning about l-s-p being an unused lexical variable in function acm-bind-l-s-p. This is also a bug. This bug doesn't occur on Emacs 28. I have a feeling it was introduced into Emacs 29 very recently. -- Alan Mackenzie (Nuremberg, Germany).