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#67568: Emacs master: Bug in byte compiler when there's an unused parameter. Date: Fri, 1 Dec 2023 15:22:24 +0000 Message-ID: References: <1c2d9219-093c-0726-13ce-2c952f6e33ba@gutov.dev> 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="545"; mail-complaints-to="usenet@ciao.gmane.io" Cc: acm@muc.de, Stefan Monnier , 67568@debbugs.gnu.org To: Dmitry Gutov Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Dec 01 16:23:09 2023 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 1r95MC-000AVI-Hz for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 01 Dec 2023 16:23:08 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1r95Lz-0005GJ-Fe; Fri, 01 Dec 2023 10:22:55 -0500 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 1r95Lx-0005Ft-F0 for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2023 10:22:53 -0500 Original-Received: from debbugs.gnu.org ([2001:470:142:5::43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1r95Lx-000763-4d for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2023 10:22:53 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1r95M5-0006UM-Ql for bug-gnu-emacs@gnu.org; Fri, 01 Dec 2023 10:23:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 01 Dec 2023 15:23:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 67568 X-GNU-PR-Package: emacs Original-Received: via spool by 67568-submit@debbugs.gnu.org id=B67568.170144416724919 (code B ref 67568); Fri, 01 Dec 2023 15:23:01 +0000 Original-Received: (at 67568) by debbugs.gnu.org; 1 Dec 2023 15:22:47 +0000 Original-Received: from localhost ([127.0.0.1]:55951 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r95Lr-0006Tr-B4 for submit@debbugs.gnu.org; Fri, 01 Dec 2023 10:22:47 -0500 Original-Received: from mail.muc.de ([193.149.48.3]:51706) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1r95Lm-0006TM-Ut for 67568@debbugs.gnu.org; Fri, 01 Dec 2023 10:22:45 -0500 Original-Received: (qmail 17229 invoked by uid 3782); 1 Dec 2023 16:22:25 +0100 Original-Received: from acm.muc.de (p4fe15fc1.dip0.t-ipconnect.de [79.225.95.193]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Fri, 01 Dec 2023 16:22:25 +0100 Original-Received: (qmail 9176 invoked by uid 1000); 1 Dec 2023 15:22:24 -0000 Content-Disposition: inline In-Reply-To: <1c2d9219-093c-0726-13ce-2c952f6e33ba@gutov.dev> X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de 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: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:275325 Archived-At: Hello again, Dmitry. On Fri, Dec 01, 2023 at 15:06:23 +0200, Dmitry Gutov wrote: > On 01/12/2023 14:49, Alan Mackenzie wrote: > > On a recent Emacs master: > > (i) emacs -Q > > (ii) In*scratch* enter the following: > > (byte-compile (lambda (x) "doc" "foo")) > > . > > (iii) Enter C-u C-x C-e to evaluate the form. The result looks like: > > #[257 "\300\207" [nil] 2 "doc > > (fn X)"] > > . This is incorrect. The only form in the constants vector is nil. > > It should be "foo". > > (iv) Note that this only happens with the unused parameter x. Without > > it, the form compiles correctly. > Might be a bug in the interpreter too? > (funcall (lambda (x) "doc" "foo") 2) > ;; => nil I have a candidate for the buggy function, namely macroexp-parse-body. It'd doc string reads "Parse a function BODY into (DECLARATIONS . EXPS).", but it's vague about what precisely a BODY is. It's not clear, either, what exactly is meant by DECLARATIONS. What the function does is move strings (or :documentation forms) from the head of BODY into DECLS. So maybe DECLARATIONS is intended to be any number of consecutive doc strings. Exceptionally, if there is precisely one string, it is not moved into DECLS. When BODY is ("doc" "foo") as is the case here, both "doc" and "foo" get moved from BODY to DECLS, leaving an empty BODY and a wrong DECLS. The return value is here (("doc" "foo") . nil), which is clearly wrong. It probably should be (("doc") . ("foo")). -- Alan Mackenzie (Nuremberg, Germany).