From unknown Sun Jun 22 03:46:16 2025 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 X-Mailer: MIME-tools 5.509 (Entity 5.509) Content-Type: text/plain; charset=utf-8 From: bug#21983 <21983@debbugs.gnu.org> To: bug#21983 <21983@debbugs.gnu.org> Subject: Status: emacs-25: cconv-convert makes invalid transformations on `setq' forms. Reply-To: bug#21983 <21983@debbugs.gnu.org> Date: Sun, 22 Jun 2025 10:46:16 +0000 retitle 21983 emacs-25: cconv-convert makes invalid transformations on `set= q' forms. reassign 21983 emacs submitter 21983 Alan Mackenzie severity 21983 normal thanks From debbugs-submit-bounces@debbugs.gnu.org Sun Nov 22 13:08:51 2015 Received: (at submit) by debbugs.gnu.org; 22 Nov 2015 18:08:51 +0000 Received: from localhost ([127.0.0.1]:48479 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1a0Z4F-0006qQ-1p for submit@debbugs.gnu.org; Sun, 22 Nov 2015 13:08:51 -0500 Received: from eggs.gnu.org ([208.118.235.92]:36996) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1a0Z4C-0006qI-HD for submit@debbugs.gnu.org; Sun, 22 Nov 2015 13:08:49 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a0Z4B-0006bL-RX for submit@debbugs.gnu.org; Sun, 22 Nov 2015 13:08:48 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50 autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:44273) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a0Z4B-0006bH-Np for submit@debbugs.gnu.org; Sun, 22 Nov 2015 13:08:47 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:46982) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a0Z4A-0007C7-OJ for bug-gnu-emacs@gnu.org; Sun, 22 Nov 2015 13:08:47 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1a0Z47-0006al-IN for bug-gnu-emacs@gnu.org; Sun, 22 Nov 2015 13:08:46 -0500 Received: from mail.muc.de ([193.149.48.3]:26571) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1a0Z47-0006aX-8r for bug-gnu-emacs@gnu.org; Sun, 22 Nov 2015 13:08:43 -0500 Received: (qmail 25795 invoked by uid 3782); 22 Nov 2015 18:08:41 -0000 Received: from acm.muc.de (p548A57CB.dip0.t-ipconnect.de [84.138.87.203]) by colin.muc.de (tmda-ofmipd) with ESMTP; Sun, 22 Nov 2015 19:08:40 +0100 Received: (qmail 3958 invoked by uid 1000); 22 Nov 2015 18:10:43 -0000 Date: Sun, 22 Nov 2015 18:10:43 +0000 To: bug-gnu-emacs@gnu.org Subject: emacs-25: cconv-convert makes invalid transformations on `setq' forms. Message-ID: <20151122181043.GC2332@acm.fritz.box> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline User-Agent: Mutt/1.5.23 (2014-03-12) X-Delivery-Agent: TMDA/1.1.12 (Macallan) From: Alan Mackenzie X-Primary-Address: acm@muc.de X-detected-operating-system: by eggs.gnu.org: FreeBSD 9.x X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.3 (----) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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: -4.3 (----) Hello, Emacs. It is desirable for the byte compiler to detect `setq' forms with an odd number of arguments. However, when lexical binding is enabled, this is prevented by cconv-convert. This converts a `setq' form into several single `setq's, and crucially, takes the liberty of supplying a nil argument to the last `setq' should no argument have been present. This is a bug. Here's a patch which appears to fix the problem: diff --git a/lisp/emacs-lisp/cconv.el b/lisp/emacs-lisp/cconv.el index efa9a3d..4a3c273 100644 --- a/lisp/emacs-lisp/cconv.el +++ b/lisp/emacs-lisp/cconv.el @@ -477,17 +477,19 @@ cconv-convert (while forms (let* ((sym (pop forms)) (sym-new (or (cdr (assq sym env)) sym)) - (value (cconv-convert (pop forms) env extend))) + (value-in-list + (and forms + (list (cconv-convert (pop forms) env extend))))) (push (pcase sym-new - ((pred symbolp) `(setq ,sym-new ,value)) - (`(car-safe ,iexp) `(setcar ,iexp ,value)) + ((pred symbolp) `(setq ,sym-new ,@value-in-list)) + (`(car-safe ,iexp) `(setcar ,iexp ,@value-in-list)) ;; This "should never happen", but for variables which are ;; mutated+captured+unused, we may end up trying to `setq' ;; on a closed-over variable, so just drop the setq. (_ ;; (byte-compile-report-error ;; (format "Internal error in cconv of (setq %s ..)" ;; sym-new)) - value)) + (car value-in-list))) prognlist))) (if (cdr prognlist) `(progn . ,(nreverse prognlist)) Because cconv-convert is written in pcase rather than elisp, I may have slipped up on some subtlety. Would somebody please check I haven't. Thanks! -- Alan Mackenzie (Nuremberg, Germany). From debbugs-submit-bounces@debbugs.gnu.org Mon Nov 23 09:13:17 2015 Received: (at 21983-done) by debbugs.gnu.org; 23 Nov 2015 14:13:17 +0000 Received: from localhost ([127.0.0.1]:49145 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1a0rrp-0007Rq-6R for submit@debbugs.gnu.org; Mon, 23 Nov 2015 09:13:17 -0500 Received: from mail.muc.de ([193.149.48.3]:56158) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1a0rrm-0007Rh-Mw for 21983-done@debbugs.gnu.org; Mon, 23 Nov 2015 09:13:15 -0500 Received: (qmail 79087 invoked by uid 3782); 23 Nov 2015 14:13:13 -0000 Date: 23 Nov 2015 14:13:13 -0000 Message-ID: <20151123141313.79086.qmail@mail.muc.de> From: Alan Mackenzie To: 21983-done@debbugs.gnu.org Subject: Re: bug#21983: emacs-25: cconv-convert makes invalid transformations on `setq' forms. Organization: muc.de e.V. In-Reply-To: X-Newsgroups: gnu.emacs.bug User-Agent: tin/2.3.1-20141224 ("Tallant") (UNIX) (FreeBSD/10.1-RELEASE-p16 (amd64)) X-Spam-Score: -0.6 (/) X-Debbugs-Envelope-To: 21983-done Cc: Alan Mackenzie X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 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.6 (/) Fixed in emacs-25 branch. -- Alan Mackenzie (Nuremberg, Germany). From unknown Sun Jun 22 03:46:16 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Tue, 22 Dec 2015 12:24:04 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator