From unknown Sun Jun 22 11:44:28 2025 X-Loop: help-debbugs@gnu.org Subject: bug#46175: Redefinable classes clobber custom slot options Resent-From: "Thompson, David" Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Fri, 29 Jan 2021 16:44:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 46175 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 46175@debbugs.gnu.org X-Debbugs-Original-To: bug-guile@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.16119386343280 (code B ref -1); Fri, 29 Jan 2021 16:44:02 +0000 Received: (at submit) by debbugs.gnu.org; 29 Jan 2021 16:43:54 +0000 Received: from localhost ([127.0.0.1]:52848 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l5WsD-0000qm-EB for submit@debbugs.gnu.org; Fri, 29 Jan 2021 11:43:54 -0500 Received: from lists.gnu.org ([209.51.188.17]:53306) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l5WsA-0000qd-AS for submit@debbugs.gnu.org; Fri, 29 Jan 2021 11:43:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:40788) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l5Ws9-0006Ml-Qw for bug-guile@gnu.org; Fri, 29 Jan 2021 11:43:50 -0500 Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]:33381) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l5Ws7-00048f-LI for bug-guile@gnu.org; Fri, 29 Jan 2021 11:43:49 -0500 Received: by mail-vs1-xe2e.google.com with SMTP id e15so5181263vsa.0 for ; Fri, 29 Jan 2021 08:43:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=worcester-edu.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=rFWaf5Et2LnXm7Vp1WU+TahUQQYgPGCbDlzjbRMuqCY=; b=sWsP/5BKz2vFisb2ynrLj2d7YwciRtNfxRNL332eL++KA9ezK+v23BBAdpiHTOvlwa XR4fkZMHn/izmcLB6+wtxDM4bH2aKJVpBAW0lx6J+vgF/nbQoUt7q6Q1bN5ECecvRrWp Zhrt6ahioBNowc0EPo8OlPnulixPmUEHGjXILFhdmjUrzCndEtwyugY27haOijyTOH98 9PmqivlSsi/SnsD0jhzncOcfYPaGOvdGcyZrN//uvbJPVD+D6Y7dDz/+2GB/d10pt7k+ qtwv7Bc/16Afp3vvYodmDdvHhwpz7SfY+HrNSelcsbCFN5TXWS1hwl6iGEVaCWIQb9JE qnbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=rFWaf5Et2LnXm7Vp1WU+TahUQQYgPGCbDlzjbRMuqCY=; b=IrnEXhfSyX6yKTiXmuIKk7l/ccV8FgynmQWbxiwawRotf+UOsYY5ptzUcRze5g/Swh rKdRFF7m9iaPtjS9jY3ILoFF7ca3zUARmQEFvQHPEU5E008sNtC3rHtDPfP/QqoevrY1 iJALa0ygH05ih0aoZVG0YxOm7eb0EYeWbK72x0uuYM9zQUVu5o3P9DUTCWKy3o+3RAXx i/y2HGgms8R7gruDSf/qOb9tdGE+mA141YhLFeC1X2jjvcq5psZlFnocpFGYEAfDN3tQ lKOof6UXaLtV7QEi9atXGzKUjuFElD0+obS7B8ty2pjlYjTU2XLziWtXUv73MfGtl1un Ejkg== X-Gm-Message-State: AOAM530qyeR2NqPFysEvvWcyvWzWOuhXqbmin0e975QPTGYHUOQoz0bd TIQHboGbn63/jZq/0NRFtlOkC+YSKlygvxxrMNaDdXPZ7xM/bw== X-Google-Smtp-Source: ABdhPJxEWVPqoP3mUUC0qyntXM8bLSg/7LJ19geqvA27aSJ5k8TjZasJhEwIhLGK5E6JjkzI+amkc1tWxNHO6Pk4GY4= X-Received: by 2002:a67:6b46:: with SMTP id g67mr2957892vsc.60.1611938626053; Fri, 29 Jan 2021 08:43:46 -0800 (PST) MIME-Version: 1.0 From: "Thompson, David" Date: Fri, 29 Jan 2021 11:43:35 -0500 Message-ID: Content-Type: multipart/mixed; boundary="000000000000354c2405ba0cb514" Received-SPF: pass client-ip=2607:f8b0:4864:20::e2e; envelope-from=dthompson2@worcester.edu; helo=mail-vs1-xe2e.google.com 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -2.3 (--) --000000000000354c2405ba0cb514 Content-Type: text/plain; charset="UTF-8" The compute-slots method for does a transformation of #:allocation #:instance slots to #:allocation #:virtual slots, but in doing so it discards all slot options besides the standard ones. This means that a metaclass that inherits from won't work as expected if it relies upon custom slot options. Test case: (use-modules (oop goops) (srfi srfi-111)) (define-class ()) (define (boxed-slot? slot) (get-keyword #:box? (slot-definition-options slot))) (define-method (compute-getter-method (class ) slot) (if (boxed-slot? slot) (make #:specializers (list class) #:procedure (let ((slot-name (slot-definition-name slot))) (lambda (obj) (unbox (slot-ref obj slot-name))))) (next-method))) (define-method (compute-setter-method (class ) slot) (if (boxed-slot? slot) (make #:specializers (list class ) #:procedure (let ((slot-name (slot-definition-name slot))) (lambda (obj value) (set-box! (slot-ref obj slot-name) value)))) (next-method))) (define-class ( )) (define-class () (bar #:accessor bar #:box? #t #:init-form (box 123)) #:metaclass ) (define-class () (bar #:accessor bar #:box? #t #:init-form (box 123)) #:metaclass ) ;; This works: (pk (+ (bar (make )) 456)) ;; This throws an error: (pk (+ (bar (make )) 456)) Attached is a patch that preserves all slot options that redefinable classes do not need to alter, including custom ones. How does it look? - Dave --000000000000354c2405ba0cb514 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-goops-Preserve-all-slot-options-in-redefinable-class.patch" Content-Disposition: attachment; filename="0001-goops-Preserve-all-slot-options-in-redefinable-class.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kkiijzsf0 RnJvbSBjYmM0MzQ1Mjc5MzgxODIzODllYmU3MmMyNTg1ODdkMTM3YTg1ODkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBUaG9tcHNvbiA8ZHRob21wc29uQHZpc3RhaGlnaGVy bGVhcm5pbmcuY29tPgpEYXRlOiBGcmksIDI5IEphbiAyMDIxIDExOjA0OjU2IC0wNTAwClN1Ympl Y3Q6IFtQQVRDSF0gZ29vcHM6IFByZXNlcnZlIGFsbCBzbG90IG9wdGlvbnMgaW4gcmVkZWZpbmFi bGUgY2xhc3Nlcy4KCiogbW9kdWxlL2dvb3BzLnNjbSAoY29tcHV0ZS1zbG90cyk6IEZpeCA8cmVk ZWZpbmFibGUtY2xhc3M+IHNsb3QKICB0cmFuc2Zvcm1hdGlvbi4KLS0tCiBtb2R1bGUvb29wL2dv b3BzLnNjbSB8IDE2ICsrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlv bnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL29vcC9nb29wcy5zY20g Yi9tb2R1bGUvb29wL2dvb3BzLnNjbQppbmRleCBkZjZkZjRmN2IuLmE4MGJlNmE3YSAxMDA2NDQK LS0tIGEvbW9kdWxlL29vcC9nb29wcy5zY20KKysrIGIvbW9kdWxlL29vcC9nb29wcy5zY20KQEAg LTMwODEsMTggKzMwODEsMjAgQEAgdmFye2luaXRhcmdzfS4iCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2xvdC1kZWZpbml0aW9uLW5hbWUgcykpKQogICAgICAg ICAgICAgICAgKHJlZiAoc2xvdC1kZWZpbml0aW9uLXNsb3QtcmVmL3JhdyBzKikpCiAgICAgICAg ICAgICAgICAoc2V0ISAoc2xvdC1kZWZpbml0aW9uLXNsb3Qtc2V0ISBzKikpKQotICAgICAgICAg IChtYWtlIChjbGFzcy1vZiBzKSAjOm5hbWUgKHNsb3QtZGVmaW5pdGlvbi1uYW1lIHMpCi0gICAg ICAgICAgICAgICAgIzpnZXR0ZXIgKHNsb3QtZGVmaW5pdGlvbi1nZXR0ZXIgcykKLSAgICAgICAg ICAgICAgICAjOnNldHRlciAoc2xvdC1kZWZpbml0aW9uLXNldHRlciBzKQotICAgICAgICAgICAg ICAgICM6YWNjZXNzb3IgKHNsb3QtZGVmaW5pdGlvbi1hY2Nlc3NvciBzKQotICAgICAgICAgICAg ICAgICM6aW5pdC1rZXl3b3JkIChzbG90LWRlZmluaXRpb24taW5pdC1rZXl3b3JkIHMpCi0gICAg ICAgICAgICAgICAgIzppbml0LXRodW5rIChzbG90LWRlZmluaXRpb24taW5pdC10aHVuayBzKQor ICAgICAgICAgIChhcHBseSBtYWtlIChjbGFzcy1vZiBzKQogICAgICAgICAgICAgICAgICM6YWxs b2NhdGlvbiAjOnZpcnR1YWwKICAgICAgICAgICAgICAgICA7OyBUT0RPOiBNYWtlIGZhc3Rlci4K ICAgICAgICAgICAgICAgICAjOnNsb3QtcmVmIChsYW1iZGEgKG8pCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChyZWYgKHNsb3QtcmVmIG8gJ2luZGlyZWN0LXNsb3RzKSkpCiAgICAgICAg ICAgICAgICAgIzpzbG90LXNldCEgKGxhbWJkYSAobyB2KQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNldCEgKHNsb3QtcmVmIG8gJ2luZGlyZWN0LXNsb3RzKSB2KSkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQhIChzbG90LXJlZiBvICdpbmRpcmVjdC1zbG90 cykgdikpCisgICAgICAgICAgICAgICAgKGxldCBsb29wICgob3B0aW9ucyAoc2xvdC1kZWZpbml0 aW9uLW9wdGlvbnMgcykpKQorICAgICAgICAgICAgICAgICAgKG1hdGNoIG9wdGlvbnMKKyAgICAg ICAgICAgICAgICAgICAgKCgpICcoKSkKKyAgICAgICAgICAgICAgICAgICAgKCgob3IgIzphbGxv Y2F0aW9uICM6c2xvdC1yZWYgIzpzbG90LXNldCEpIF8gLiByZXN0KQorICAgICAgICAgICAgICAg ICAgICAgKGxvb3AgcmVzdCkpCisgICAgICAgICAgICAgICAgICAgICgoa3cgYXJnIC4gcmVzdCkK KyAgICAgICAgICAgICAgICAgICAgIChjb25zKiBrdyBhcmcgKGxvb3AgcmVzdCkpKSkpKSkpCiAg ICAgICAgKGVsc2UgcykpKQogICAgICh1bmxlc3MgKGVxdWFsPyAobGlzdC1oZWFkIHNsb3RzIChs ZW5ndGggc3RhdGljLXNsb3RzKSkKICAgICAgICAgICAgICAgICAgICAgc3RhdGljLXNsb3RzKQot LSAKMi4yNS4xCgo= --000000000000354c2405ba0cb514-- From unknown Sun Jun 22 11:44:28 2025 MIME-Version: 1.0 X-Mailer: MIME-tools 5.505 (Entity 5.505) X-Loop: help-debbugs@gnu.org From: help-debbugs@gnu.org (GNU bug Tracking System) To: "Thompson, David" Subject: bug#46175: closed (Re: bug#46175: Redefinable classes clobber custom slot options) Message-ID: References: <87lfahwsvu.fsf@pobox.com> X-Gnu-PR-Message: they-closed 46175 X-Gnu-PR-Package: guile Reply-To: 46175@debbugs.gnu.org Date: Sat, 20 Mar 2021 19:03:02 +0000 Content-Type: multipart/mixed; boundary="----------=_1616266982-29438-1" This is a multi-part message in MIME format... ------------=_1616266982-29438-1 Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Your bug report #46175: Redefinable classes clobber custom slot options which was filed against the guile package, has been closed. The explanation is attached below, along with your original report. If you require more details, please reply to 46175@debbugs.gnu.org. --=20 46175: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D46175 GNU Bug Tracking System Contact help-debbugs@gnu.org with problems ------------=_1616266982-29438-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at 46175-done) by debbugs.gnu.org; 20 Mar 2021 19:02:54 +0000 Received: from localhost ([127.0.0.1]:53128 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lNgs9-0007eU-Qm for submit@debbugs.gnu.org; Sat, 20 Mar 2021 15:02:54 -0400 Received: from fanzine.igalia.com ([178.60.130.6]:54358) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1lNgs4-0007eC-0w for 46175-done@debbugs.gnu.org; Sat, 20 Mar 2021 15:02:51 -0400 DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=igalia.com; s=20170329; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:References:Subject:Cc:To:From; bh=UHot+yyjKfnB00mEXbIENF7mXIOkrLnHfrU2FU7EWhY=; b=r+yLzuVVN+6z4MOwBrkhY3cXs+yHpgrHQp3BCMrFFjlEl/3WTRHQEolNT2CY/SOKriAtG/134+pS/xERs+VY6T36c2CRwADT7+snvyrkzzM4K/Cu/4U557sNUjvmxrEC/crs25SDtDmqK0LCUkAZSxRNojK6NA3aEdpQct6mJO/MNNDWJ23EyWKnw6nBluEEw/IUBqMnGQCco2WLFS2obDuXnzSTAY5Dnx4mtq0TpNyXmJYOE3tSP+sKHdRE3kysEP0oqPZtNMapWnEsYK66wguTzPCwjsu6ZTfdDODbVwvB0Xmix4t/8JpIC57F6X0lYtmLhEy+0tMMGgGU5kBCVA==; Received: from 82-65-63-215.subs.proxad.net ([82.65.63.215] helo=sparrow) by fanzine.igalia.com with esmtpsa (Cipher TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim) id 1lNgrw-0006kC-O3; Sat, 20 Mar 2021 20:02:41 +0100 From: Andy Wingo To: "Thompson, David" Subject: Re: bug#46175: Redefinable classes clobber custom slot options References: Date: Sat, 20 Mar 2021 20:02:29 +0100 In-Reply-To: (David Thompson's message of "Fri, 29 Jan 2021 11:43:35 -0500") Message-ID: <87lfahwsvu.fsf@pobox.com> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/27.1 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.7 (/) X-Debbugs-Envelope-To: 46175-done Cc: 46175-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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.3 (/) On Fri 29 Jan 2021 17:43, "Thompson, David" writes: > The compute-slots method for does a transformation > of #:allocation #:instance slots to #:allocation #:virtual slots, but > in doing so it discards all slot options besides the standard ones. > This means that a metaclass that inherits from > won't work as expected if it relies upon custom slot options. Thanks for the report; patch applied! Andy ------------=_1616266982-29438-1 Content-Type: message/rfc822 Content-Disposition: inline Content-Transfer-Encoding: 7bit Received: (at submit) by debbugs.gnu.org; 29 Jan 2021 16:43:54 +0000 Received: from localhost ([127.0.0.1]:52848 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l5WsD-0000qm-EB for submit@debbugs.gnu.org; Fri, 29 Jan 2021 11:43:54 -0500 Received: from lists.gnu.org ([209.51.188.17]:53306) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1l5WsA-0000qd-AS for submit@debbugs.gnu.org; Fri, 29 Jan 2021 11:43:52 -0500 Received: from eggs.gnu.org ([2001:470:142:3::10]:40788) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1l5Ws9-0006Ml-Qw for bug-guile@gnu.org; Fri, 29 Jan 2021 11:43:50 -0500 Received: from mail-vs1-xe2e.google.com ([2607:f8b0:4864:20::e2e]:33381) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1l5Ws7-00048f-LI for bug-guile@gnu.org; Fri, 29 Jan 2021 11:43:49 -0500 Received: by mail-vs1-xe2e.google.com with SMTP id e15so5181263vsa.0 for ; Fri, 29 Jan 2021 08:43:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=worcester-edu.20150623.gappssmtp.com; s=20150623; h=mime-version:from:date:message-id:subject:to; bh=rFWaf5Et2LnXm7Vp1WU+TahUQQYgPGCbDlzjbRMuqCY=; b=sWsP/5BKz2vFisb2ynrLj2d7YwciRtNfxRNL332eL++KA9ezK+v23BBAdpiHTOvlwa XR4fkZMHn/izmcLB6+wtxDM4bH2aKJVpBAW0lx6J+vgF/nbQoUt7q6Q1bN5ECecvRrWp Zhrt6ahioBNowc0EPo8OlPnulixPmUEHGjXILFhdmjUrzCndEtwyugY27haOijyTOH98 9PmqivlSsi/SnsD0jhzncOcfYPaGOvdGcyZrN//uvbJPVD+D6Y7dDz/+2GB/d10pt7k+ qtwv7Bc/16Afp3vvYodmDdvHhwpz7SfY+HrNSelcsbCFN5TXWS1hwl6iGEVaCWIQb9JE qnbg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=rFWaf5Et2LnXm7Vp1WU+TahUQQYgPGCbDlzjbRMuqCY=; b=IrnEXhfSyX6yKTiXmuIKk7l/ccV8FgynmQWbxiwawRotf+UOsYY5ptzUcRze5g/Swh rKdRFF7m9iaPtjS9jY3ILoFF7ca3zUARmQEFvQHPEU5E008sNtC3rHtDPfP/QqoevrY1 iJALa0ygH05ih0aoZVG0YxOm7eb0EYeWbK72x0uuYM9zQUVu5o3P9DUTCWKy3o+3RAXx i/y2HGgms8R7gruDSf/qOb9tdGE+mA141YhLFeC1X2jjvcq5psZlFnocpFGYEAfDN3tQ lKOof6UXaLtV7QEi9atXGzKUjuFElD0+obS7B8ty2pjlYjTU2XLziWtXUv73MfGtl1un Ejkg== X-Gm-Message-State: AOAM530qyeR2NqPFysEvvWcyvWzWOuhXqbmin0e975QPTGYHUOQoz0bd TIQHboGbn63/jZq/0NRFtlOkC+YSKlygvxxrMNaDdXPZ7xM/bw== X-Google-Smtp-Source: ABdhPJxEWVPqoP3mUUC0qyntXM8bLSg/7LJ19geqvA27aSJ5k8TjZasJhEwIhLGK5E6JjkzI+amkc1tWxNHO6Pk4GY4= X-Received: by 2002:a67:6b46:: with SMTP id g67mr2957892vsc.60.1611938626053; Fri, 29 Jan 2021 08:43:46 -0800 (PST) MIME-Version: 1.0 From: "Thompson, David" Date: Fri, 29 Jan 2021 11:43:35 -0500 Message-ID: Subject: Redefinable classes clobber custom slot options To: bug-guile@gnu.org Content-Type: multipart/mixed; boundary="000000000000354c2405ba0cb514" Received-SPF: pass client-ip=2607:f8b0:4864:20::e2e; envelope-from=dthompson2@worcester.edu; helo=mail-vs1-xe2e.google.com 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, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, RCVD_IN_DNSWL_NONE=-0.0001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-Spam-Score: -1.3 (-) X-Debbugs-Envelope-To: submit X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 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: -2.3 (--) --000000000000354c2405ba0cb514 Content-Type: text/plain; charset="UTF-8" The compute-slots method for does a transformation of #:allocation #:instance slots to #:allocation #:virtual slots, but in doing so it discards all slot options besides the standard ones. This means that a metaclass that inherits from won't work as expected if it relies upon custom slot options. Test case: (use-modules (oop goops) (srfi srfi-111)) (define-class ()) (define (boxed-slot? slot) (get-keyword #:box? (slot-definition-options slot))) (define-method (compute-getter-method (class ) slot) (if (boxed-slot? slot) (make #:specializers (list class) #:procedure (let ((slot-name (slot-definition-name slot))) (lambda (obj) (unbox (slot-ref obj slot-name))))) (next-method))) (define-method (compute-setter-method (class ) slot) (if (boxed-slot? slot) (make #:specializers (list class ) #:procedure (let ((slot-name (slot-definition-name slot))) (lambda (obj value) (set-box! (slot-ref obj slot-name) value)))) (next-method))) (define-class ( )) (define-class () (bar #:accessor bar #:box? #t #:init-form (box 123)) #:metaclass ) (define-class () (bar #:accessor bar #:box? #t #:init-form (box 123)) #:metaclass ) ;; This works: (pk (+ (bar (make )) 456)) ;; This throws an error: (pk (+ (bar (make )) 456)) Attached is a patch that preserves all slot options that redefinable classes do not need to alter, including custom ones. How does it look? - Dave --000000000000354c2405ba0cb514 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-goops-Preserve-all-slot-options-in-redefinable-class.patch" Content-Disposition: attachment; filename="0001-goops-Preserve-all-slot-options-in-redefinable-class.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_kkiijzsf0 RnJvbSBjYmM0MzQ1Mjc5MzgxODIzODllYmU3MmMyNTg1ODdkMTM3YTg1ODkxIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBEYXZpZCBUaG9tcHNvbiA8ZHRob21wc29uQHZpc3RhaGlnaGVy bGVhcm5pbmcuY29tPgpEYXRlOiBGcmksIDI5IEphbiAyMDIxIDExOjA0OjU2IC0wNTAwClN1Ympl Y3Q6IFtQQVRDSF0gZ29vcHM6IFByZXNlcnZlIGFsbCBzbG90IG9wdGlvbnMgaW4gcmVkZWZpbmFi bGUgY2xhc3Nlcy4KCiogbW9kdWxlL2dvb3BzLnNjbSAoY29tcHV0ZS1zbG90cyk6IEZpeCA8cmVk ZWZpbmFibGUtY2xhc3M+IHNsb3QKICB0cmFuc2Zvcm1hdGlvbi4KLS0tCiBtb2R1bGUvb29wL2dv b3BzLnNjbSB8IDE2ICsrKysrKysrKy0tLS0tLS0KIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlv bnMoKyksIDcgZGVsZXRpb25zKC0pCgpkaWZmIC0tZ2l0IGEvbW9kdWxlL29vcC9nb29wcy5zY20g Yi9tb2R1bGUvb29wL2dvb3BzLnNjbQppbmRleCBkZjZkZjRmN2IuLmE4MGJlNmE3YSAxMDA2NDQK LS0tIGEvbW9kdWxlL29vcC9nb29wcy5zY20KKysrIGIvbW9kdWxlL29vcC9nb29wcy5zY20KQEAg LTMwODEsMTggKzMwODEsMjAgQEAgdmFye2luaXRhcmdzfS4iCiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAoc2xvdC1kZWZpbml0aW9uLW5hbWUgcykpKQogICAgICAg ICAgICAgICAgKHJlZiAoc2xvdC1kZWZpbml0aW9uLXNsb3QtcmVmL3JhdyBzKikpCiAgICAgICAg ICAgICAgICAoc2V0ISAoc2xvdC1kZWZpbml0aW9uLXNsb3Qtc2V0ISBzKikpKQotICAgICAgICAg IChtYWtlIChjbGFzcy1vZiBzKSAjOm5hbWUgKHNsb3QtZGVmaW5pdGlvbi1uYW1lIHMpCi0gICAg ICAgICAgICAgICAgIzpnZXR0ZXIgKHNsb3QtZGVmaW5pdGlvbi1nZXR0ZXIgcykKLSAgICAgICAg ICAgICAgICAjOnNldHRlciAoc2xvdC1kZWZpbml0aW9uLXNldHRlciBzKQotICAgICAgICAgICAg ICAgICM6YWNjZXNzb3IgKHNsb3QtZGVmaW5pdGlvbi1hY2Nlc3NvciBzKQotICAgICAgICAgICAg ICAgICM6aW5pdC1rZXl3b3JkIChzbG90LWRlZmluaXRpb24taW5pdC1rZXl3b3JkIHMpCi0gICAg ICAgICAgICAgICAgIzppbml0LXRodW5rIChzbG90LWRlZmluaXRpb24taW5pdC10aHVuayBzKQor ICAgICAgICAgIChhcHBseSBtYWtlIChjbGFzcy1vZiBzKQogICAgICAgICAgICAgICAgICM6YWxs b2NhdGlvbiAjOnZpcnR1YWwKICAgICAgICAgICAgICAgICA7OyBUT0RPOiBNYWtlIGZhc3Rlci4K ICAgICAgICAgICAgICAgICAjOnNsb3QtcmVmIChsYW1iZGEgKG8pCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChyZWYgKHNsb3QtcmVmIG8gJ2luZGlyZWN0LXNsb3RzKSkpCiAgICAgICAg ICAgICAgICAgIzpzbG90LXNldCEgKGxhbWJkYSAobyB2KQotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKHNldCEgKHNsb3QtcmVmIG8gJ2luZGlyZWN0LXNsb3RzKSB2KSkpKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChzZXQhIChzbG90LXJlZiBvICdpbmRpcmVjdC1zbG90 cykgdikpCisgICAgICAgICAgICAgICAgKGxldCBsb29wICgob3B0aW9ucyAoc2xvdC1kZWZpbml0 aW9uLW9wdGlvbnMgcykpKQorICAgICAgICAgICAgICAgICAgKG1hdGNoIG9wdGlvbnMKKyAgICAg ICAgICAgICAgICAgICAgKCgpICcoKSkKKyAgICAgICAgICAgICAgICAgICAgKCgob3IgIzphbGxv Y2F0aW9uICM6c2xvdC1yZWYgIzpzbG90LXNldCEpIF8gLiByZXN0KQorICAgICAgICAgICAgICAg ICAgICAgKGxvb3AgcmVzdCkpCisgICAgICAgICAgICAgICAgICAgICgoa3cgYXJnIC4gcmVzdCkK KyAgICAgICAgICAgICAgICAgICAgIChjb25zKiBrdyBhcmcgKGxvb3AgcmVzdCkpKSkpKSkpCiAg ICAgICAgKGVsc2UgcykpKQogICAgICh1bmxlc3MgKGVxdWFsPyAobGlzdC1oZWFkIHNsb3RzIChs ZW5ndGggc3RhdGljLXNsb3RzKSkKICAgICAgICAgICAgICAgICAgICAgc3RhdGljLXNsb3RzKQot LSAKMi4yNS4xCgo= --000000000000354c2405ba0cb514-- ------------=_1616266982-29438-1--