From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Michael Heerdegen Newsgroups: gmane.emacs.bugs Subject: bug#47552: 27.1; cl-defstruct field names matching read-only variables -> bad code Date: Fri, 16 Jun 2023 05:48:47 +0200 Message-ID: <87mt10awyo.fsf@web.de> References: <87wntlyhn9.fsf@rfc20.org> <87y2dxerd8.fsf@gnus.org> <87pmz0236v.fsf@gnus.org> Mime-Version: 1.0 Content-Type: text/plain Content-Transfer-Encoding: quoted-printable Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="17835"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Cc: Matt Armstrong , Stefan Monnier , 47552@debbugs.gnu.org To: Lars Ingebrigtsen Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Fri Jun 16 05:49:17 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 1qA0Sb-0004Q4-2w for geb-bug-gnu-emacs@m.gmane-mx.org; Fri, 16 Jun 2023 05:49:17 +0200 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qA0SO-0007ju-W3; Thu, 15 Jun 2023 23:49:05 -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 1qA0SN-0007ji-0q for bug-gnu-emacs@gnu.org; Thu, 15 Jun 2023 23:49:03 -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 1qA0SM-00086r-Ow for bug-gnu-emacs@gnu.org; Thu, 15 Jun 2023 23:49:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qA0SM-0000es-Lf for bug-gnu-emacs@gnu.org; Thu, 15 Jun 2023 23:49:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Michael Heerdegen Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Fri, 16 Jun 2023 03:49:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 47552 X-GNU-PR-Package: emacs Original-Received: via spool by 47552-submit@debbugs.gnu.org id=B47552.16868873402522 (code B ref 47552); Fri, 16 Jun 2023 03:49:02 +0000 Original-Received: (at 47552) by debbugs.gnu.org; 16 Jun 2023 03:49:00 +0000 Original-Received: from localhost ([127.0.0.1]:48387 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qA0SK-0000ec-01 for submit@debbugs.gnu.org; Thu, 15 Jun 2023 23:49:00 -0400 Original-Received: from mout.web.de ([212.227.17.12]:52211) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qA0SH-0000eM-Qf for 47552@debbugs.gnu.org; Thu, 15 Jun 2023 23:48:58 -0400 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=web.de; s=s29768273; t=1686887328; x=1687492128; i=michael_heerdegen@web.de; bh=AVWhyQkV/5W+gVwgfnXuJGy7wZgP09L7PzXey8qNvB0=; h=X-UI-Sender-Class:From:To:Cc:Subject:In-Reply-To:References:Date; b=gSadRwAu8EJNWnscf6kDfjdB50FOmp2VZN6CJqZZniy0YXpwhTZ6xkSChjrNkuMQPtQkC9k VZHqOGl3wx0Pac2uIJJG2xxobvCdLMxsuNJEqXmN9dyi6i5FFXtERpBFZmxdUpYqtKoCjcuIR RwkT2SMnxCcHceAhV1dfHYCF8hX6ts7QLjRD3BL55rCA7u7OXu8zmcGOBB9KYhOtrKbj8r9oR FptlIPlJRvgyTBdVNX4H+bIgbxUi58YhsRBOS7WSKXMn6B9uE6FrYybBOHy+hTsmkvAPRkWOo JjUDNraceyrVxE/HZ/USbXUNxjlMyiu2RaeedQSyW+jjT5lQkymw== X-UI-Sender-Class: 814a7b36-bfc1-4dae-8640-3722d8ec6cd6 Original-Received: from drachen.dragon ([88.66.201.139]) by smtp.web.de (mrweb105 [213.165.67.124]) with ESMTPSA (Nemesis) id 1MWQyX-1qbiTj1FkZ-00Xtuc; Fri, 16 Jun 2023 05:48:48 +0200 In-Reply-To: <87pmz0236v.fsf@gnus.org> (Lars Ingebrigtsen's message of "Sun, 11 Apr 2021 18:31:20 +0200") X-Provags-ID: V03:K1:OxI0juSpjBCjfg2nI0qYhEJwdpNkam2f07ldPe1DvOLo3CplXa7 P00wW7P7jauLxccyE0U1j+hQMeh/rchfdQBAmP4hzU6hi24TpPV7jsApDWkP+cYD6PR/VBt bMxEmkSZ68r7a8V2mL7vkyR0+i5qD/ZKMSkEYgQzHrWvZEu1XQQWKAFaV3JmkvXjn4MZKuh mzyZybfTztAcp+3fIvUqA== UI-OutboundReport: notjunk:1;M01:P0:wNnbLvSbbek=;JFfKGe03KxRujShoQcBGxYN1CnG iUu4V9gVvsQwo1AJVsG+YCt4GjYgcuhlcL6SR72Q6n4alUtoPFwjxjbQ7/kLJoJYwi1CZIgW/ 26gFuDuKYaJ8xb8xDv51TsEQWvsCR1lbf7AYPdCxJaGGYvC97inSrzI323wn/MNvH4tz2IGU5 nkggJkI5WCc9CyUBeN5y2zzJ4jmQhE+e4V5egi4rf+WyQRWNCk3gBwwu4pLto2vPCxcdeZRG/ +Jsrv8QV72a74ondUAqhG4bPIDXwbR4I5cDt+r5VNDkz758S6cBWmhLr8gViTexKQFnO7gdS6 Cebf+b6todiXTr1M3USqbE60NjZ18qF8i7Vz185t/fn0NDe9Elj+WPbulxDubpKgGyjkSUwaw 93pTGgegefC3L0o2xz/D6qX+XHRXlCSlfclTh+w1XDyADWnUMnWFfettisOKY3ZdZrQLkFO6E aw4xe+37Q4JNKqFJEeJlfF+PwH/ws0jGF9q+Kaw4o8HzVfBcedyD55FAA2tsOgY6PNiVeLTnI OIISTgEZjxAoTIbFObJCystsA92xl7Mspglelq/U+7INWiDF4EE6Bak3DNP2nj8KJdiqyK4Ek 59dkaIC7+6/5I7XGeHmtfgaAuGxcFIiZiCNsyqCWeBk+gyGpQsZEe6fs4VDQOsL2pLaqu61uQ 4RMUMxj48ynb1X9QgTx8de+bVq7aMfm0AjxDKEwwPUMKArz1QnVTXhJJvW/BMfLtptIwymrJR 4m5fa3FrL0+i0OUznb4FkRS/F8nAYWWzx862tGx+p+NXIla3TZHB3ylEKsA3Q+5paRMscc2G 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:263446 Archived-At: Lars Ingebrigtsen writes: > Stefan Monnier writes: > > > I'm pretty sure that's the right solution, *but* I don't think it's > > obvious how to get there: `cl-defstruct` defines the constructor > > using `cl-defsubst` and its `&key` arguments, so the `:gcs-gone` keywo= rd > > argument inevitably maps to a `gcs-done` variable by definition of how > > `&key` is supposed to work. > > I'm having a hard time following the code in cl-defstruct -- even where > things are actually defined. > > But... Indeed doing this "doesn't work": It still doesn't work - I think this bug had been closed by accident? The original recipe still fails. Here is another incarnation of this bug: #+begin_src emacs-lisp (require 'cl-lib) (defun xyz ()) (cl-defstruct barf "Doc" (buffer-file-name (xyz))) (defun barf-foo () (let ((barf (make-barf))) barf)) #+end_src ~~> | Debugger entered--Lisp error: (wrong-type-argument stringp (xyz)) | (let* ((buffer-file-name (car (cdr (or (plist-member --cl-rest-- ':buf= fer-file-name) ... | make-barf--cmacro((make-barf)) | apply(make-barf--cmacro (make-barf) nil) | macroexp--compiler-macro(make-barf--cmacro (make-barf)) | #f(compiled-function (form func) #)(((ma= ke-barf)) make-barf) | macroexp--expand-all((make-barf)) Here the problem is that the variable `buffer-file-name' is not allowed to be bound to something that is not a string. Michael.