From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Brandon Irizarry Newsgroups: gmane.emacs.bugs Subject: bug#66938: 30.0.50 [PATCH]: Make EIEIO :accessor behave like :reader when reading a slot's value Date: Sat, 4 Nov 2023 18:03:06 -0400 Message-ID: Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="000000000000bc5f4206095ac813" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="13122"; mail-complaints-to="usenet@ciao.gmane.io" To: 66938@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Sat Nov 04 23:03:43 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 1qzOk3-0003Fr-2g for geb-bug-gnu-emacs@m.gmane-mx.org; Sat, 04 Nov 2023 23:03:43 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1qzOjq-0007Fl-Jw; Sat, 04 Nov 2023 18:03:30 -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 1qzOjm-0007FW-Qm for bug-gnu-emacs@gnu.org; Sat, 04 Nov 2023 18:03:26 -0400 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 1qzOjm-00023N-13 for bug-gnu-emacs@gnu.org; Sat, 04 Nov 2023 18:03:26 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1qzOkM-0008Ot-4z for bug-gnu-emacs@gnu.org; Sat, 04 Nov 2023 18:04:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Brandon Irizarry Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 04 Nov 2023 22:04:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 66938 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: patch X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.169913542932271 (code B ref -1); Sat, 04 Nov 2023 22:04:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 4 Nov 2023 22:03:49 +0000 Original-Received: from localhost ([127.0.0.1]:35862 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qzOk9-0008OQ-8o for submit@debbugs.gnu.org; Sat, 04 Nov 2023 18:03:49 -0400 Original-Received: from lists.gnu.org ([2001:470:142::17]:48300) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1qzOk6-0008OB-SF for submit@debbugs.gnu.org; Sat, 04 Nov 2023 18:03:47 -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 1qzOjQ-0007Ck-MB for bug-gnu-emacs@gnu.org; Sat, 04 Nov 2023 18:03:04 -0400 Original-Received: from mail-lf1-x133.google.com ([2a00:1450:4864:20::133]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1qzOjO-00022R-Jl for bug-gnu-emacs@gnu.org; Sat, 04 Nov 2023 18:03:04 -0400 Original-Received: by mail-lf1-x133.google.com with SMTP id 2adb3069b0e04-507a5f2193bso3503848e87.1 for ; Sat, 04 Nov 2023 15:03:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1699135380; x=1699740180; darn=gnu.org; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=oY4u1tt72EbLJZoClY5cQzSh+5Z1U8WLg/y6Z29Gxmk=; b=CepvbAfJwpOXlaHArvsqxiNrWuiQM0x77RszzyplxDHbCdNkT8nCK7Aoe1GJ790fgm ZsGdU8Rgrzl8h+qGv/PKHiTLTCKJkqMVg9UVegtPPklKxS4pCBANYW/NNcYb89CidUkA sVTcRWuLMh6V+t2cH+D7704VRDw+fCeoXCR4NTEpe/qJkxX8HKx+S4sEyaptCLa+lKQ/ y/MO+NNmqlxJXb9hgblkNlhhQENgWXHi/ITHjbXqJ4qJvZxjC2hfIKdoQwpgOppIHt8+ qisQZ9YrgAazuYU4UQce+jJYYwCPJ9FjYuLAUgR9BflloGm/kvo+tAyBI6jV4GHZGt1w DtOA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1699135380; x=1699740180; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=oY4u1tt72EbLJZoClY5cQzSh+5Z1U8WLg/y6Z29Gxmk=; b=JL8QfNtxek0/OrBEEHTXMTmrUqKCp/Abf+F80M9siXd1hmcen7Y2u6RtrOfCjbTqiG WrNNToabqvuBTisPfKsYL+jC3V0FjTd+l8jnLiC2jYI1c7LwUtIuhHmTCRzYJZExHVae IBucsc8WKu8rcoiLDQD869YDJmi6eb5YWQXwpxZNDpK0yMk5CvU0LWlFVPDL03ltzKwZ HRX/bPcbRGVK7mV4CoJgXYl5o7PFSvuxpnGvf0washKnYNrG2H+poROtImqDLItSHqc9 Lkn3jV02XwJwVquXTDEvLt00Xiw4t0Zr/unw7faMe8FFYb74OroTuX15y4FjIaJj7lZq U1mg== X-Gm-Message-State: AOJu0Yxr1PmfoxBm3ORjEy1L9aYVQHYk2wcqG2dIcoQpTqZUhs1ORGNF z4iMyxlwQITvR4eM8mF3QMRL4lpLr83Tr/Q4NnSJ/zp8Ulo= X-Google-Smtp-Source: AGHT+IENBCg73uerT6moyJOeX15pGmwn9g7vSocwCybU80JJDCr/HoQI4W5+jO7rSvSKDVmCFW3H3Isub9HiTRfK/a0= X-Received: by 2002:a05:6512:6d6:b0:500:7aba:4d07 with SMTP id u22-20020a05651206d600b005007aba4d07mr2807557lff.22.1699135379735; Sat, 04 Nov 2023 15:02:59 -0700 (PDT) Received-SPF: pass client-ip=2a00:1450:4864:20::133; envelope-from=brandon.irizarry@gmail.com; helo=mail-lf1-x133.google.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, HTML_MESSAGE=0.001, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 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: , 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:273792 Archived-At: --000000000000bc5f4206095ac813 Content-Type: multipart/alternative; boundary="000000000000bc5f4006095ac811" --000000000000bc5f4006095ac811 Content-Type: text/plain; charset="UTF-8" Hope everyone is well. I've included a suggested patch for 'eieio.el', which slightly modifies the behavior of EIEIO's 'defclass'. When playing around with 'eieio-instance-inheritor' as a base class, I noticed that calls to the accessor (when used as a getter) weren't delegating to the parent instance (as defined when calling 'clone'). That is, an object clone that doesn't set its fields directly will report 'nil' when the accessor method is used as a getter for some slot. However, neither 'oref' nor ':reader' methods share this problem. The included patch duplicates the code for the reader method defined for the ':reader' case. In particular, it removes the 'slot-unboundp' check, which appeared to be the real culprit here. I've also deleted the FIXME comment which asked, "Why is this different from the :reader case?" since it no longer differs from it. There is some more context provided (along with an example) in the commit message included in the patch, in case it helps. I know this isn't earth-shattering, but I couldn't help but notice the issue; and, at least to me, it seemed like incorrect behavior. (Otherwise, in order to obtain the delegation behavior for a given slot, I'd be forced to define ':reader' and ':writer' separately, which feels rather verbose, given we have ':accessor' for this exact purpose.) - Brandon --000000000000bc5f4006095ac811 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Hope everyone is well.

I've included a suggeste= d patch for 'eieio.el', which slightly
modifies the behavior of = EIEIO's 'defclass'. When playing around with
'eieio-inst= ance-inheritor' as a base class, I noticed that calls to
the accesso= r (when used as a getter) weren't delegating to the parent
inst= ance (as defined when calling 'clone'). That is, an object clone th= at doesn't set
its fields directly will report 'nil' = when the accessor method is used as a getter for some slot.

<= /div>
However, neither 'oref' nor ':reader' methods sha= re this problem.

The included patch duplicates the code for the re= ader method defined for
the ':reader' case. In particular, = it removes the 'slot-unboundp' check, which appeared=C2=A0
to be the real culprit here. I've also deleted the FIXME comment whic= h asked, "Why is this=C2=A0
different from the :reader case?= " since it no longer differs from it.

There is some more cont= ext provided (along with an example) in the
commit message included in t= he patch, in case it helps.

I know this isn't earth-shattering, = but I couldn't help but notice the issue;
and, at least to me, = it seemed like incorrect behavior. (Otherwise, in order to
obtain= the delegation behavior for a given slot, I'd be forced to define
=C2=A0':reader' and ':writer' separately, which feels= rather verbose, given we have ':accessor'
for this exact= purpose.)

- Brandon





--000000000000bc5f4006095ac811-- --000000000000bc5f4206095ac813 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Make-EIEIO-accessor-behave-like-reader-when-reading.patch" Content-Disposition: attachment; filename="0001-Make-EIEIO-accessor-behave-like-reader-when-reading.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lokl8pp30 RnJvbSAyZDQwZDYzZDg3MzhkYzQ0YjAyY2E2MTg0M2ZhNjE5NTY5NThlODRlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBCcmFuZG9uIDxicmFuZG9uLmlyaXphcnJ5QGdtYWlsLmNvbT4K RGF0ZTogU2F0LCA0IE5vdiAyMDIzIDE3OjExOjMyIC0wNDAwClN1YmplY3Q6IFtQQVRDSF0gTWFr ZSBFSUVJTyAnOmFjY2Vzc29yJyBiZWhhdmUgbGlrZSAnOnJlYWRlcicgd2hlbiByZWFkaW5nCgoq IGxpc3AvZW1hY3MtbGlzcC9laWVpby5lbCAoZGVmY2xhc3MpOiBSZW1vdmUgJ3Nsb3QtYm91bmRw JyBjaGVjayBmb3IKOmFjY2Vzc29yJ3MgZ2V0dGVyCgpDbG9uZXMgb2YgaW5zdGFuY2VzIG9mIHN1 YmNsYXNzZXMgb2YgJ2VpZWlvLWluc3RhbmNlLWluaGVyaXRvcicgZG9uJ3QKZGVsZWdhdGUgdG8g dGhlaXIgJzpwYXJlbnQtaW5zdGFuY2UnIGZpZWxkIHdoZW4gcmVhZGluZyBvYmplY3QgZmllbGRz CnVzaW5nICc6YWNjZXNzb3InLgoKU2F5IEkgaGF2ZSB0aGlzIGNvZGU6CgooZGVmY2xhc3MgZm9v IChlaWVpby1pbnN0YW5jZS1pbmhlcml0b3IpCiAgKCh4IDppbml0YXJnIDp4CiAgICAgIDphY2Nl c3NvciByZWYteAogICAgICA6cmVhZGVyIGdldC14KSkpCgooc2V0cSBvYmoxIChmb28gOnggNCkp ICAgOyAjcyhmb28gZWllaW8tLXVuYm91bmQgNCkKKHNldHEgb2JqMiAoY2xvbmUgb2JqMSkpIDsg I3MoZm9vICNzKGZvbyBlaWVpby0tdW5ib3VuZCA0KSBlaWVpby0tdW5ib3VuZCkKCihyZWYteCBv YmoxKSA7IDQsIHdoaWNoIGlzIGNvcnJlY3QuCihyZWYteCBvYmoyKSA7IG5pbC4gVGhpcyBpcyB3 aGF0IHdlIHdhbnQgdG8gZml4LgooZ2V0LXggb2JqMikgOyBHaXZlcyB1cyA0OiBhY2Nlc3Mgdmlh IHRoZSByZWFkZXIgcGVyZm9ybXMgZGVsZWdhdGlvbi4KCk15IGltcHJlc3Npb24gaXMgdGhhdCAn OmFjY2Vzc29yJyBzaG91bGQgYmVoYXZlIGFzIGlmICc6cmVhZGVyJyBhbmQKJzp3cml0ZXInIGhh ZCBiZWVuIHByb3ZpZGVkIHNlcGFyYXRlbHkuCgpXaXRoIHRoaXMgcGF0Y2gsICcocmVmLXggb2Jq MiknIG5vdyB1c2VzIHRoZSBleGFjdCBzYW1lIG1ldGhvZCBhcwonOnJlYWRlcicsIGFuZCBzbyB3 b3VsZCBnaXZlIHVzIDQsIGFzIGRlc2lyZWQuCi0tLQogbGlzcC9lbWFjcy1saXNwL2VpZWlvLmVs IHwgNSArKy0tLQogMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMo LSkKCmRpZmYgLS1naXQgYS9saXNwL2VtYWNzLWxpc3AvZWllaW8uZWwgYi9saXNwL2VtYWNzLWxp c3AvZWllaW8uZWwKaW5kZXggMzlhNWZkNWIxOWMuLjgyMjQ2MDZlYzU3IDEwMDY0NAotLS0gYS9s aXNwL2VtYWNzLWxpc3AvZWllaW8uZWwKKysrIGIvbGlzcC9lbWFjcy1saXNwL2VpZWlvLmVsCkBA IC0yMTMsOSArMjEzLDggQEAgZGVmY2xhc3MKICAgICAgICAgICAgICAgICAgICAsKGludGVybmFs LS1mb3JtYXQtZG9jc3RyaW5nLWxpbmUKICAgICAgICAgICAgICAgICAgICAgICJSZXRyaWV2ZSB0 aGUgc2xvdCBgJVMnIGZyb20gYW4gb2JqZWN0IG9mIGNsYXNzIGAlUycuIgogICAgICAgICAgICAg ICAgICAgICAgc25hbWUgbmFtZSkKLSAgICAgICAgICAgICAgICAgICA7OyBGSVhNRTogV2h5IGlz IHRoaXMgZGlmZmVyZW50IGZyb20gdGhlIDpyZWFkZXIgY2FzZT8KLSAgICAgICAgICAgICAgICAg ICAoaWYgKHNsb3QtYm91bmRwIHRoaXMgJyxzbmFtZSkgKGVpZWlvLW9yZWYgdGhpcyAnLHNuYW1l KSkpCi0gICAgICAgICAgICAgICAgYWNjZXNzb3JzKQorICAgICAgICAgICAgICAgICAgIChzbG90 LXZhbHVlIHRoaXMgJyxzbmFtZSkpCisgICAgICAgICAgICAgICAgICBhY2Nlc3NvcnMpCiAgICAg ICAgICAgKHdoZW4gKGFuZCBlaWVpby1iYWNrd2FyZC1jb21wYXRpYmlsaXR5IChlcSBhbGxvYyA6 Y2xhc3MpKQogICAgICAgICAgICAgOzsgRklYTUU6IEhvdyBjb3VsZCBJIGRlY2xhcmUgdGhpcyAq bWV0aG9kKiBhcyBvYnNvbGV0ZS4KICAgICAgICAgICAgIChwdXNoIGAoY2wtZGVmbWV0aG9kICxh Y2NlcyAoKHRoaXMgKHN1YmNsYXNzICxuYW1lKSkpCi0tIAoyLjM5LjIKCg== --000000000000bc5f4206095ac813--