From debbugs-submit-bounces@debbugs.gnu.org Sun Jun 28 02:12:33 2015 Received: (at submit) by debbugs.gnu.org; 28 Jun 2015 06:12:33 +0000 Received: from localhost ([127.0.0.1]:59625 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z95pO-0004Eq-FE for submit@debbugs.gnu.org; Sun, 28 Jun 2015 02:12:33 -0400 Received: from eggs.gnu.org ([208.118.235.92]:55672) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z95pJ-0004Eb-U6 for submit@debbugs.gnu.org; Sun, 28 Jun 2015 02:12:28 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z95pB-0002iG-Et for submit@debbugs.gnu.org; Sun, 28 Jun 2015 02:12:20 -0400 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]:52965) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z95pB-0002iB-Bd for submit@debbugs.gnu.org; Sun, 28 Jun 2015 02:12:17 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40929) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z95p8-0006Nd-Dh for bug-gnu-emacs@gnu.org; Sun, 28 Jun 2015 02:12:17 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Z95p3-0002gq-DM for bug-gnu-emacs@gnu.org; Sun, 28 Jun 2015 02:12:14 -0400 Received: from smtp11.smtpout.orange.fr ([80.12.242.133]:24143 helo=smtp.smtpout.orange.fr) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Z95p2-0002gC-Ph for bug-gnu-emacs@gnu.org; Sun, 28 Jun 2015 02:12:09 -0400 Received: from localhost ([83.202.246.69]) by mwinf5d46 with ME id liC61q0041WaFzF03iC6gP; Sun, 28 Jun 2015 08:12:06 +0200 X-ME-Helo: localhost X-ME-Date: Sun, 28 Jun 2015 08:12:06 +0200 X-ME-IP: 83.202.246.69 Date: Sun, 28 Jun 2015 08:02:43 +0200 (CEST) Message-Id: <20150628.080243.1733196053784095862.devel@pollock-nageoire.net> To: bug-gnu-emacs@gnu.org Subject: eieio/slot/group From: Pierre Lorenzon X-Mailer: Mew version 6.5 on Emacs 25.0.50 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.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: -5.0 (-----) 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: -5.0 (-----) Following code : >>> -- Code (require 'eieio) (require 'cl) (defun slot-groups (class slot) (message "Slot `%s' of class `%s' has group `%s'" slot class (alist-get :group (cl--slot-descriptor-props (car-safe (member* slot (eieio-class-slots class) :test (lambda (s1 s2) (eq s1 (eieio-slot-descriptor-name s2)) ))))))) (defclass mybase () ((name :custom string :group ident)) ) (slot-groups 'mybase 'name) (defclass mysub (mybase) ((name :group history))) (slot-groups 'mysub 'name) (slot-groups 'mybase 'name) >>> -- End Code Produces following sequence of messages : >>> -- Messages Slot `name' of class `mybase' has group `(ident)' Slot `name' of class `mysub' has group `(history ident)' Slot `name' of class `mybase' has group `(history ident)' >>> -- End Messages As definition of mysub alterates definition of mybase. It should certainely not be the case ! Definition of a subclass might not change anything of the definition of the base classe. I suspect a list somewhere "taken as a pointer" and not copied hence altered when it should not ! I'll investigate. Pierre In GNU Emacs 25.0.50.1 (x86_64-unknown-linux-gnu) of 2015-06-28 on jabberwocky Repository revision: bbf63ee00a3c263e3190320bc389bf0b72a5a9d5 Configured using: `configure --prefix=/home/emacs' Configured features: JPEG SOUND NOTIFY ZLIB Important settings: value of $LANG: C locale-coding-system: nil Major mode: Messages Minor modes in effect: gpm-mouse-mode: t tooltip-mode: t global-eldoc-mode: t electric-indent-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent messages: Saving file /home/emacs/Messages... Wrote /home/emacs/Messages Making completion list... [2 times] user-error: Beginning of history; no preceding item [2 times] Load-path shadows: /home/emacs/share/emacs/site-lisp/edext/latex/regexp hides /home/emacs/share/emacs/site-lisp/edext/utils/regexp /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/j++-pointed hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/lists/j++-pointed /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/j++-interface hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/misc/j++-interface /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-synchronized hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-synchronized /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-timed hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-timed /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-file /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-test hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-test /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-object /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-target hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/j++-target /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-process hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-process /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-asynchronous hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-asynchronous /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-synchronous hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-synchronous /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-filtered hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/network/j++-filtered /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-buffer hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/network/j++-buffer /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-linked hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/widgets/j++-linked /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/widgets/j++-node /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/j++-discid hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-discid /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-author hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-author /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/j++-discid hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-discid /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-piece hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-piece /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-project hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-project /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-performer hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-performer /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-person hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-person /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-flaggable hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-flaggable /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-item /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-file /home/emacs/share/emacs/site-lisp/jabberwocky/basic/graphs/j++-element hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/spreadsheet/j++-element /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-latex hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/user/j++-latex /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/j++-loop hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-loop /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/j++-inline hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-inline /home/emacs/share/emacs/site-lisp/jabberwocky/packages/subsystems/j++-class hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-class /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-file /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-mastered hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-mastered /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/user/j++-files hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-files /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-node /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/j++-driver hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-driver /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-item /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-output /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-client hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-client /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-bar-title hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-bar-title /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-connection hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-connection /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/j++-driver hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-driver /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-parameters hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-parameters /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-client hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-client /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-mark hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/mixers/j++-mark /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-piece hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/mixers/j++-piece /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/b/j++-style /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/div/j++-style /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/font/j++-style /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/a/j++-name hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/meta/j++-name /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/span/j++-style /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/body/j++-bgcolor hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/td/j++-bgcolor /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-text hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/template/j++-text /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-node /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-text hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-text /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-position /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-root hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-root /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-amplify /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-incdec /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-inout hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-inout /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-object /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-meta hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-meta /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-input hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-input /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chainsetup hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-chainsetup /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-operator hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-operator /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-item /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-chain /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-output /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-position /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-amplify /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-highpass hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-highpass /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-start-and-stop-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-start-and-stop-position /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-incdec /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-variable hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-variable /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-run-group hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-run-group /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-start-and-stop hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-start-and-stop /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-record-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-record-position /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-container hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-container /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-play-position /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-chain /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-amplify /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-incdec /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-object /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-control hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-control /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-input hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-input /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chainsetup hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-chainsetup /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-play /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-chain /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-output /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-position /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-preset hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-preset /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-play /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-record hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-record /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cross /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/data /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/boot hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/boot /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cblfs hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/cblfs /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tools hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/tools /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tests hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/tests /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/cross /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/data /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/boot hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/boot /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cblfs hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/cblfs /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tools hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/tools /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/grub hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/grub /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tests hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/tests /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/bash hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/bash /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.10 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.10 /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.25 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.25 /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/eglibc hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/eglibc /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.53 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.53 /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.04 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.04 /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/gcc hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/gcc /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/05 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/05 /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/cross /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/07 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/07 /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/06 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/06 /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/data /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/09 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/09 /home/emacs/share/emacs/site-lisp/edext/utils/list hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/lfs/scripts/chapter05/list /home/emacs/share/emacs/site-lisp/edext/latex/replace hides /home/emacs/share/emacs/25.0.50/lisp/replace Features: (shadow sort gnus-util mail-extr emacsbug message dired format-spec rfc822 mml easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail regexp-opt rfc2047 rfc2045 ietf-drums mm-util help-fns mail-prsvr mail-utils cl-seq cl-macs cl eieio byte-opt gv bytecomp byte-compile cl-extra seq cconv eieio-core cl-loaddefs pcase cl-lib t-mouse time-date disp-table mule-util tooltip eldoc electric uniquify ediff-hook vc-hooks lisp-float-type tabulated-list newcomment elisp-mode lisp-mode prog-mode register page menu-bar rfn-eshadow timer select mouse jit-lock font-lock syntax facemenu font-core frame cl-generic cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese charscript case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote inotify multi-tty make-network-process emacs) Memory information: ((conses 16 85783 4012) (symbols 48 18834 0) (miscs 40 64 124) (strings 32 14933 4721) (string-bytes 1 445196) (vectors 16 10259) (vector-slots 8 372316 9859) (floats 8 134 307) (intervals 56 789 90) (buffers 976 14) (heap 1024 17185 684)) From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 29 00:41:25 2015 Received: (at 20914) by debbugs.gnu.org; 29 Jun 2015 04:41:25 +0000 Received: from localhost ([127.0.0.1]:60765 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z9Qsf-0006oE-9t for submit@debbugs.gnu.org; Mon, 29 Jun 2015 00:41:24 -0400 Received: from smtp01.smtpout.orange.fr ([80.12.242.123]:53355 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z9QsW-0006ni-KG for 20914@debbugs.gnu.org; Mon, 29 Jun 2015 00:41:14 -0400 Received: from localhost ([83.202.246.69]) by mwinf5d53 with ME id m4h11q0021WaFzF034h1kv; Mon, 29 Jun 2015 06:41:01 +0200 X-ME-Helo: localhost X-ME-Date: Mon, 29 Jun 2015 06:41:01 +0200 X-ME-IP: 83.202.246.69 Date: Mon, 29 Jun 2015 06:31:37 +0200 (CEST) Message-Id: <20150629.063137.1610262414319480638.devel@pollock-nageoire.net> To: 20914@debbugs.gnu.org Subject: Re: bug#20914: eieio/slot/group From: Pierre Lorenzon In-Reply-To: <20150628.080243.1733196053784095862.devel@pollock-nageoire.net> References: <20150628.080243.1733196053784095862.devel@pollock-nageoire.net> X-Mailer: Mew version 6.5 on Emacs 25.0.50 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20914 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.0 (/) OK situation seems to be worth than I thought. The following code : >>> -- More complete code (require 'eieio) (require 'cl) (defvar slot-props '(:group :custom :label :documentation)) (defun slot-prop (class slot prop) (message "Slot `%s' of class `%s' has `%s' `%s'" slot class prop (alist-get prop (cl--slot-descriptor-props (car-safe (member* slot (eieio-class-slots class) :test (lambda (s1 s2) (eq s1 (eieio-slot-descriptor-name s2)) ))))))) (defun slot-props-msg (class) (mapc (lambda (prop) (slot-prop class 'name prop)) slot-props)) (defclass mybase () ((name :custom string :group ident :label "Name" :documentation "My name")) ) (slot-props-msg 'mybase) (defclass mysub (mybase) ((name :group history :custom item :label "Your real name" :documentation "A suitable name"))) (slot-props-msg 'mysub) (slot-props-msg 'mybase) >>> -- End More complete code produces following sequence of messages : >>> -- Messages Slot `name' of class `mybase' has `:group' `(ident)' Slot `name' of class `mybase' has `:custom' `string' Slot `name' of class `mybase' has `:label' `Name' Slot `name' of class `mybase' has `:documentation' `My name' Slot `name' of class `mysub' has `:group' `(history ident)' Slot `name' of class `mysub' has `:custom' `item' Slot `name' of class `mysub' has `:label' `Your real name' Slot `name' of class `mysub' has `:documentation' `A suitable name' Slot `name' of class `mybase' has `:group' `(history ident)' Slot `name' of class `mybase' has `:custom' `item' Slot `name' of class `mybase' has `:label' `Your real name' Slot `name' of class `mybase' has `:documentation' `A suitable name' >>> -- End Messages In fact not only property group but documentation, label and even custom have been modified in superclass by definition of subclass. Things probably lie in `eieio--slot-override' in eieio-core.el or maybe in call of this function. Regards Pierre From: Pierre Lorenzon Subject: bug#20914: eieio/slot/group Date: Sun, 28 Jun 2015 08:02:43 +0200 (CEST) > > Following code : > >>>> -- Code > > (require 'eieio) > (require 'cl) > > (defun slot-groups (class slot) > (message "Slot `%s' of class `%s' has group `%s'" > slot class > (alist-get :group > (cl--slot-descriptor-props > (car-safe > (member* slot > (eieio-class-slots class) > :test (lambda (s1 s2) > (eq s1 > (eieio-slot-descriptor-name s2)) > ))))))) > (defclass mybase () > ((name :custom string > :group ident)) > ) > > (slot-groups 'mybase 'name) > > (defclass mysub (mybase) > ((name :group history))) > > (slot-groups 'mysub 'name) > > (slot-groups 'mybase 'name) > >>>> -- End Code > > Produces following sequence of messages : > >>>> -- Messages > > Slot `name' of class `mybase' has group `(ident)' > Slot `name' of class `mysub' has group `(history ident)' > Slot `name' of class `mybase' has group `(history ident)' > >>>> -- End Messages > > > As definition of mysub alterates definition of mybase. It > should certainely not be the case ! Definition of a subclass > might not change anything of the definition of the base classe. > > > I suspect a list somewhere "taken as a pointer" and not copied > hence altered when it should not ! I'll investigate. > > Pierre > > In GNU Emacs 25.0.50.1 (x86_64-unknown-linux-gnu) > of 2015-06-28 on jabberwocky > Repository revision: bbf63ee00a3c263e3190320bc389bf0b72a5a9d5 > Configured using: > `configure --prefix=/home/emacs' > > Configured features: > JPEG SOUND NOTIFY ZLIB > > Important settings: > value of $LANG: C > locale-coding-system: nil > > Major mode: Messages > > Minor modes in effect: > gpm-mouse-mode: t > tooltip-mode: t > global-eldoc-mode: t > electric-indent-mode: t > menu-bar-mode: t > file-name-shadow-mode: t > global-font-lock-mode: t > font-lock-mode: t > auto-composition-mode: t > auto-encryption-mode: t > auto-compression-mode: t > line-number-mode: t > transient-mark-mode: t > > Recent messages: > > Saving file /home/emacs/Messages... > Wrote /home/emacs/Messages > Making completion list... [2 times] > user-error: Beginning of history; no preceding item [2 times] > > Load-path shadows: > /home/emacs/share/emacs/site-lisp/edext/latex/regexp hides /home/emacs/share/emacs/site-lisp/edext/utils/regexp > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/j++-pointed hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/lists/j++-pointed > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/j++-interface hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/misc/j++-interface > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-synchronized hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-synchronized > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-timed hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-timed > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-file > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-test hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-test > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-object > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-target hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/j++-target > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-process hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-process > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-asynchronous hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-asynchronous > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-synchronous hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/interfaces/processes/j++-synchronous > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-filtered hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/network/j++-filtered > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/j++-buffer hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/processes/network/j++-buffer > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-linked hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/widgets/j++-linked > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/widgets/j++-node > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/j++-discid hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-discid > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-author hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-author > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/j++-discid hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-discid > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-piece hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-piece > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/j++-project hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-project > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-performer hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/projects/j++-performer > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-person hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-person > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-flaggable hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-flaggable > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-item > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-file > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/graphs/j++-element hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/spreadsheet/j++-element > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/items/j++-latex hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/user/j++-latex > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/j++-loop hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-loop > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/j++-inline hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-inline > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/subsystems/j++-class hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-class > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/files/j++-file hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-file > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/j++-mastered hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-mastered > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/databases/user/j++-files hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/ecascheme/j++-files > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-node > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/j++-driver hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-driver > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-item > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-output > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-client hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-client > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-bar-title hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-bar-title > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-connection hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-connection > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/j++-driver hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-driver > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/efm/j++-parameters hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-parameters > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/alsa/j++-client hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/j++-client > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-mark hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/mixers/j++-mark > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-piece hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/mixers/j++-piece > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/b/j++-style > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/div/j++-style > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/font/j++-style > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/a/j++-name hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/meta/j++-name > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/j++-style hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/span/j++-style > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/body/j++-bgcolor hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/attributes/td/j++-bgcolor > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-text hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/template/j++-text > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/trees/j++-node hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-node > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-text hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-text > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-position > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-root hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/project/latex/tree/j++-root > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-amplify > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-incdec > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-inout hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-inout > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-object > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/html/nodes/j++-meta hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-meta > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-input hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-input > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chainsetup hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-chainsetup > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-operator hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-operator > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/cdrom/components/j++-item hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-item > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-chain > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-output > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-position > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-amplify > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-highpass hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-highpass > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-start-and-stop-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-start-and-stop-position > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-incdec > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-variable hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-variable > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-run-group hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-run-group > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-start-and-stop hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-start-and-stop > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-record-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-record-position > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-container hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-container > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-play-position > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/interfaces/j++-chain > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-amplify hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-amplify > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-incdec hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-incdec > /home/emacs/share/emacs/site-lisp/jabberwocky/basic/widgets/j++-object hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-object > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-control hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-control > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-input hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-input > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chainsetup hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-chainsetup > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-play > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-chain hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-chain > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/j++-output hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-output > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/ecasound/j++-position hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/objects/j++-position > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-preset hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-preset > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-play hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-play > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/scmel/eca/objects/j++-record hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/sound/festival/presets/j++-record > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cross > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/data > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/boot hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/boot > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cblfs hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/cblfs > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tools hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/tools > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tests hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/tests > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/cross > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/data > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/boot hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/boot > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/cblfs hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/cblfs > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tools hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/tools > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/grub hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/grub > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.2.0/tests hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/tests > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/bash hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/bash > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.10 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.10 > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.25 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.25 > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/eglibc hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/eglibc > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.53 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.53 > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/10.04 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/10.04 > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/gcc hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/gcc > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/05 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/05 > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/cross hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/cross > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/07 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/07 > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/06 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/06 > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/1.0.0/data hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/data > /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/2.1.0/09 hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/clfs/data/development/09 > /home/emacs/share/emacs/site-lisp/edext/utils/list hides /home/emacs/share/emacs/site-lisp/jabberwocky/packages/generator/lfs/scripts/chapter05/list > /home/emacs/share/emacs/site-lisp/edext/latex/replace hides /home/emacs/share/emacs/25.0.50/lisp/replace > > Features: > (shadow sort gnus-util mail-extr emacsbug message dired format-spec > rfc822 mml easymenu mml-sec mm-decode mm-bodies mm-encode mail-parse > rfc2231 mailabbrev gmm-utils mailheader sendmail regexp-opt rfc2047 > rfc2045 ietf-drums mm-util help-fns mail-prsvr mail-utils cl-seq cl-macs > cl eieio byte-opt gv bytecomp byte-compile cl-extra seq cconv eieio-core > cl-loaddefs pcase cl-lib t-mouse time-date disp-table mule-util tooltip > eldoc electric uniquify ediff-hook vc-hooks lisp-float-type > tabulated-list newcomment elisp-mode lisp-mode prog-mode register page > menu-bar rfn-eshadow timer select mouse jit-lock font-lock syntax > facemenu font-core frame cl-generic cham georgian utf-8-lang misc-lang > vietnamese tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 > hebrew greek romanian slovak czech european ethiopic indian cyrillic > chinese charscript case-table epa-hook jka-cmpr-hook help simple abbrev > minibuffer cl-preloaded nadvice loaddefs button faces cus-face macroexp > files text-properties overlay sha1 md5 base64 format env code-pages mule > custom widget hashtable-print-readable backquote inotify multi-tty > make-network-process emacs) > > Memory information: > ((conses 16 85783 4012) > (symbols 48 18834 0) > (miscs 40 64 124) > (strings 32 14933 4721) > (string-bytes 1 445196) > (vectors 16 10259) > (vector-slots 8 372316 9859) > (floats 8 134 307) > (intervals 56 789 90) > (buffers 976 14) > (heap 1024 17185 684)) > > > From debbugs-submit-bounces@debbugs.gnu.org Mon Jun 29 13:39:26 2015 Received: (at 20914) by debbugs.gnu.org; 29 Jun 2015 17:39:26 +0000 Received: from localhost ([127.0.0.1]:33280 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z9d1h-0004lW-Pp for submit@debbugs.gnu.org; Mon, 29 Jun 2015 13:39:26 -0400 Received: from smtp01.smtpout.orange.fr ([80.12.242.123]:33809 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z9d1f-0004lG-9s for 20914@debbugs.gnu.org; Mon, 29 Jun 2015 13:39:24 -0400 Received: from localhost ([83.202.246.69]) by mwinf5d48 with ME id mHfG1q00G1WaFzF03HfGPi; Mon, 29 Jun 2015 19:39:17 +0200 X-ME-Helo: localhost X-ME-Date: Mon, 29 Jun 2015 19:39:17 +0200 X-ME-IP: 83.202.246.69 Date: Mon, 29 Jun 2015 19:29:52 +0200 (CEST) Message-Id: <20150629.192952.75170699401312078.devel@pollock-nageoire.net> To: 20914@debbugs.gnu.org Subject: Re: bug#20914: eieio/slot/group From: Pierre Lorenzon In-Reply-To: <20150629.063137.1610262414319480638.devel@pollock-nageoire.net> References: <20150628.080243.1733196053784095862.devel@pollock-nageoire.net> <20150629.063137.1610262414319480638.devel@pollock-nageoire.net> X-Mailer: Mew version 6.5 on Emacs 25.0.50 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Multipart/Mixed; boundary="--Next_Part(Mon_Jun_29_19_29_52_2015_111)--" Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20914 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.0 (/) ----Next_Part(Mon_Jun_29_19_29_52_2015_111)-- Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit OK I got it ! The problem comes from use of `copy-sequence' in `eieio-copy-parents-into-subclass' function of eieio-core. this copy is not reccursive as explained in code comment but it should be ! There's a joined patch that fixes the bug. Regards Pierre ----Next_Part(Mon_Jun_29_19_29_52_2015_111)-- Content-Type: Text/X-Patch; charset=us-ascii Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="eieio-core-0629.patch" --- eieio-core..orig.el 2015-06-28 07:26:49.000000000 +0200 +++ eieio-core.el 2015-06-29 19:20:28.000000000 +0200 @@ -660,9 +660,32 @@ (let ((pslots (eieio--class-slots pcv)) (pinit (eieio--class-initarg-tuples pcv))) (dotimes (i (length pslots)) - (let* ((sd (cl--copy-slot-descriptor (aref pslots i))) + ;;; -- Props should be copied as well + ;;; PLN Mon Jun 29 17:25:54 2015 + ;; + ;; Due to the way `cl--copy-slot-descriptor' acts + ;; props in the copied object will not be a new + ;; sequence but a reference to the parent + ;; sequence. Hence when modifying this sequence + ;; parent slot props will be altered as well : and it + ;; SHOULD NOT ! + ;; + (let* ((pslot (aref pslots i)) + (sd (cl--copy-slot-descriptor pslot)) (init (car (rassq (cl--slot-descriptor-name sd) pinit)))) + ;; + ;; Simply applying a `copy-sequence' on the props + ;; will not work since props itself is a sequence + ;; whose elements will not be copied and only + ;; reference elements of the old props plist. A + ;; reccursive copy should be performed. + ;; + (setf (cl--slot-descriptor-props sd) + (copy-tree + (cl--slot-descriptor-props pslot))) (eieio--add-new-slot newc sd init nil nil sn)) + ;; + ;;; -- End Props should be copied as well )) ;; while/let ;; Now duplicate all the class alloc slots. (let ((pcslots (eieio--class-class-slots pcv))) ----Next_Part(Mon_Jun_29_19_29_52_2015_111)---- From debbugs-submit-bounces@debbugs.gnu.org Tue Jun 30 14:09:28 2015 Received: (at 20914) by debbugs.gnu.org; 30 Jun 2015 18:09:28 +0000 Received: from localhost ([127.0.0.1]:34736 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z9zyK-0003GW-22 for submit@debbugs.gnu.org; Tue, 30 Jun 2015 14:09:28 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:61097) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Z9zyI-0003G0-DU for 20914@debbugs.gnu.org; Tue, 30 Jun 2015 14:09:27 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0AsEwA731xV/2cGNJ1cgxCEAoVVuzcJh0sEAgKBPDkUAQEBAQEBAYEKQQWDXQEBAwFWIwULCw4mEhQYDSSINwjPIwEBAQEGAQEBAR6LOoUFB4QtBYtEqUAjhBQigngBAQE X-IPAS-Result: A0AsEwA731xV/2cGNJ1cgxCEAoVVuzcJh0sEAgKBPDkUAQEBAQEBAYEKQQWDXQEBAwFWIwULCw4mEhQYDSSINwjPIwEBAQEGAQEBAR6LOoUFB4QtBYtEqUAjhBQigngBAQE X-IronPort-AV: E=Sophos;i="5.13,465,1427774400"; d="scan'208";a="128884841" Received: from 157-52-6-103.cpe.teksavvy.com (HELO pastel.home) ([157.52.6.103]) by ironport2-out.teksavvy.com with ESMTP; 30 Jun 2015 14:09:20 -0400 Received: by pastel.home (Postfix, from userid 20848) id 739095FE1B; Tue, 30 Jun 2015 14:09:20 -0400 (EDT) From: Stefan Monnier To: Pierre Lorenzon Subject: Re: bug#20914: eieio/slot/group Message-ID: References: <20150628.080243.1733196053784095862.devel@pollock-nageoire.net> <20150629.063137.1610262414319480638.devel@pollock-nageoire.net> <20150629.192952.75170699401312078.devel@pollock-nageoire.net> Date: Tue, 30 Jun 2015 14:09:20 -0400 In-Reply-To: <20150629.192952.75170699401312078.devel@pollock-nageoire.net> (Pierre Lorenzon's message of "Mon, 29 Jun 2015 19:29:52 +0200 (CEST)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 20914 Cc: 20914@debbugs.gnu.org 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.3 (/) > The problem comes from use of `copy-sequence' in > `eieio-copy-parents-into-subclass' function of eieio-core. this > copy is not reccursive as explained in code comment but it > should be ! There's a joined patch that fixes the bug. Thanks for the investigation. I think the fix should be applied deeper. Can you confirm that the patch below works for you as well? Stefan diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el index ed0639b..2e9bdde 100644 --- a/lisp/emacs-lisp/cl-preloaded.el +++ b/lisp/emacs-lisp/cl-preloaded.el @@ -195,7 +195,7 @@ (:constructor nil) (:constructor cl--make-slot-descriptor (name &optional initform type props)) - (:copier cl--copy-slot-descriptor)) + (:copier nil)) ;; FIXME: This is actually not used yet, for circularity reasons! "Descriptor of structure slot." name ;Attribute name (symbol). @@ -205,6 +205,11 @@ ;; :documentation, :protection, :custom, :label, :group, :printer. (props nil :type alist)) +(defun cl--copy-slot-descriptor (slot) + (let ((new (copy-sequence slot))) + (cl-callf copy-sequence (cl--slot-descriptor-props new)) + new)) + (cl-defstruct (cl--class (:constructor nil) (:copier nil)) From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 01 00:12:05 2015 Received: (at 20914) by debbugs.gnu.org; 1 Jul 2015 04:12:05 +0000 Received: from localhost ([127.0.0.1]:35017 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZA9NU-0007BV-UJ for submit@debbugs.gnu.org; Wed, 01 Jul 2015 00:12:05 -0400 Received: from smtp01.smtpout.orange.fr ([80.12.242.123]:45254 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZA9NR-0007Au-1y for 20914@debbugs.gnu.org; Wed, 01 Jul 2015 00:12:02 -0400 Received: from localhost ([86.212.76.37]) by mwinf5d48 with ME id msBt1q00C0oHB8603sBuTj; Wed, 01 Jul 2015 06:11:54 +0200 X-ME-Helo: localhost X-ME-Date: Wed, 01 Jul 2015 06:11:54 +0200 X-ME-IP: 86.212.76.37 Date: Wed, 01 Jul 2015 06:02:28 +0200 (CEST) Message-Id: <20150701.060228.1839196597497012994.devel@pollock-nageoire.net> To: monnier@iro.umontreal.ca Subject: Re: bug#20914: eieio/slot/group From: Pierre Lorenzon In-Reply-To: References: <20150629.063137.1610262414319480638.devel@pollock-nageoire.net> <20150629.192952.75170699401312078.devel@pollock-nageoire.net> X-Mailer: Mew version 6.5 on Emacs 25.0.50 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20914 Cc: 20914@debbugs.gnu.org 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.0 (/) From: Stefan Monnier Subject: Re: bug#20914: eieio/slot/group Date: Tue, 30 Jun 2015 14:09:20 -0400 >> The problem comes from use of `copy-sequence' in >> `eieio-copy-parents-into-subclass' function of eieio-core. this >> copy is not reccursive as explained in code comment but it >> should be ! There's a joined patch that fixes the bug. > > Thanks for the investigation. I think the fix should be Sure it is better to have a true copier for cl--slot-descriptor. > applied deeper. Can you confirm that the patch below works for you unfortunately it does not ! I modified cl-preloaded.el recompiled it but once restarting emacs my example classes do not havae suitable properties. When doing Ch f cl--copy-slot-descriptor I get that it is an alias for copy-sequence as it was before and not the function defined by the new definition you gave. Moreover if I force cl-prelaoded.el to be loaded I get the correct definition. I suspect that things are not loaded as they should but why .... > as well? > > > Stefan > > > diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el > index ed0639b..2e9bdde 100644 > --- a/lisp/emacs-lisp/cl-preloaded.el > +++ b/lisp/emacs-lisp/cl-preloaded.el > @@ -195,7 +195,7 @@ > (:constructor nil) > (:constructor cl--make-slot-descriptor > (name &optional initform type props)) > - (:copier cl--copy-slot-descriptor)) > + (:copier nil)) > ;; FIXME: This is actually not used yet, for circularity reasons! > "Descriptor of structure slot." > name ;Attribute name (symbol). > @@ -205,6 +205,11 @@ > ;; :documentation, :protection, :custom, :label, :group, :printer. > (props nil :type alist)) > > +(defun cl--copy-slot-descriptor (slot) > + (let ((new (copy-sequence slot))) Are you sure that a copy-sequence will be enough here ? props themselves are sequences hence they will be referenced by this copy-sequence not copied. I think that a copy-tree should be used here. > + (cl-callf copy-sequence (cl--slot-descriptor-props new)) > + new)) > + > (cl-defstruct (cl--class > (:constructor nil) > (:copier nil)) Ok I'll try to understand why it does not work. I'll probably learn something in this history and that's good ! Pierre From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 01 02:44:41 2015 Received: (at 20914) by debbugs.gnu.org; 1 Jul 2015 06:44:41 +0000 Received: from localhost ([127.0.0.1]:35068 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZABlA-0002MK-Pt for submit@debbugs.gnu.org; Wed, 01 Jul 2015 02:44:41 -0400 Received: from smtp02.smtpout.orange.fr ([80.12.242.124]:28718 helo=smtp.smtpout.orange.fr) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZABl7-0002M6-Qu for 20914@debbugs.gnu.org; Wed, 01 Jul 2015 02:44:39 -0400 Received: from localhost ([86.212.76.37]) by mwinf5d55 with ME id mukW1q00d0oHB8603ukX9u; Wed, 01 Jul 2015 08:44:31 +0200 X-ME-Helo: localhost X-ME-Date: Wed, 01 Jul 2015 08:44:31 +0200 X-ME-IP: 86.212.76.37 Date: Wed, 01 Jul 2015 08:35:05 +0200 (CEST) Message-Id: <20150701.083505.514312490268737442.devel@pollock-nageoire.net> To: monnier@iro.umontreal.ca Subject: Re: bug#20914: eieio/slot/group From: Pierre Lorenzon In-Reply-To: <20150701.060228.1839196597497012994.devel@pollock-nageoire.net> References: <20150629.192952.75170699401312078.devel@pollock-nageoire.net> <20150701.060228.1839196597497012994.devel@pollock-nageoire.net> X-Mailer: Mew version 6.5 on Emacs 25.0.50 / Mule 6.0 (HANACHIRUSATO) Mime-Version: 1.0 Content-Type: Text/Plain; charset=us-ascii Content-Transfer-Encoding: 7bit X-Spam-Score: 0.0 (/) X-Debbugs-Envelope-To: 20914 Cc: 20914@debbugs.gnu.org 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.0 (/) Sorry in fact it works when patching and recompiling the whole stuff.Recompiling only cl-preloaded.el is not enough. Anyway copy-tree should be used and not copy-sequence for the properties. Otherwise properties are not eq but car of them are eq and that's not what we want. Pierre From: Pierre Lorenzon Subject: bug#20914: eieio/slot/group Date: Wed, 01 Jul 2015 06:02:28 +0200 (CEST) > From: Stefan Monnier > Subject: Re: bug#20914: eieio/slot/group > Date: Tue, 30 Jun 2015 14:09:20 -0400 > >>> The problem comes from use of `copy-sequence' in >>> `eieio-copy-parents-into-subclass' function of eieio-core. this >>> copy is not reccursive as explained in code comment but it >>> should be ! There's a joined patch that fixes the bug. >> >> Thanks for the investigation. I think the fix should be > > > Sure it is better to have a true copier for > cl--slot-descriptor. > > >> applied deeper. Can you confirm that the patch below works for you > > unfortunately it does not ! I modified cl-preloaded.el > recompiled it but once restarting emacs my example classes do > not havae suitable properties. When doing Ch f > cl--copy-slot-descriptor I get that it is an alias for > copy-sequence as it was before and not the function defined > by the new definition you gave. Moreover if I force > cl-prelaoded.el to be loaded I get the correct definition. I > suspect that things are not loaded as they should but why > .... > > > > >> as well? >> >> >> Stefan >> >> >> diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el >> index ed0639b..2e9bdde 100644 >> --- a/lisp/emacs-lisp/cl-preloaded.el >> +++ b/lisp/emacs-lisp/cl-preloaded.el >> @@ -195,7 +195,7 @@ >> (:constructor nil) >> (:constructor cl--make-slot-descriptor >> (name &optional initform type props)) >> - (:copier cl--copy-slot-descriptor)) >> + (:copier nil)) >> ;; FIXME: This is actually not used yet, for circularity reasons! >> "Descriptor of structure slot." >> name ;Attribute name (symbol). >> @@ -205,6 +205,11 @@ >> ;; :documentation, :protection, :custom, :label, :group, :printer. >> (props nil :type alist)) >> >> +(defun cl--copy-slot-descriptor (slot) >> + (let ((new (copy-sequence slot))) > > > > Are you sure that a copy-sequence will be enough here ? props > themselves are sequences hence they will be referenced by > this copy-sequence not copied. I think that a copy-tree > should be used here. > > >> + (cl-callf copy-sequence (cl--slot-descriptor-props new)) >> + new)) >> + >> (cl-defstruct (cl--class >> (:constructor nil) >> (:copier nil)) > > Ok I'll try to understand why it does not > work. I'll probably learn something in this > history and that's good ! > > > Pierre > > > From debbugs-submit-bounces@debbugs.gnu.org Wed Jul 01 09:31:52 2015 Received: (at 20914-done) by debbugs.gnu.org; 1 Jul 2015 13:31:52 +0000 Received: from localhost ([127.0.0.1]:35463 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZAI7C-0006Q1-US for submit@debbugs.gnu.org; Wed, 01 Jul 2015 09:31:51 -0400 Received: from ironport2-out.teksavvy.com ([206.248.154.181]:54875) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1ZAI73-0006Pd-Da for 20914-done@debbugs.gnu.org; Wed, 01 Jul 2015 09:31:42 -0400 X-IronPort-Anti-Spam-Filtered: true X-IronPort-Anti-Spam-Result: A0A2FgA731xV/2cGNJ1cgxCEAoVVu0CEfoJNBAICgTw6EwEBAQEBAQGBCkEFg10BAQMBViMFCwsOJhIUGA0kiDcIzyMBAQEBAQEEAQEBAR6LOoUFB4QtBYtEqUAjhBQigngBAQE X-IPAS-Result: A0A2FgA731xV/2cGNJ1cgxCEAoVVu0CEfoJNBAICgTw6EwEBAQEBAQGBCkEFg10BAQMBViMFCwsOJhIUGA0kiDcIzyMBAQEBAQEEAQEBAR6LOoUFB4QtBYtEqUAjhBQigngBAQE X-IronPort-AV: E=Sophos;i="5.13,465,1427774400"; d="scan'208";a="128946136" Received: from 157-52-6-103.cpe.teksavvy.com (HELO pastel.home) ([157.52.6.103]) by ironport2-out.teksavvy.com with ESMTP; 01 Jul 2015 09:31:35 -0400 Received: by pastel.home (Postfix, from userid 20848) id 39152616A0; Wed, 1 Jul 2015 09:31:35 -0400 (EDT) From: Stefan Monnier To: Pierre Lorenzon Subject: Re: bug#20914: eieio/slot/group Message-ID: References: <20150629.192952.75170699401312078.devel@pollock-nageoire.net> <20150701.060228.1839196597497012994.devel@pollock-nageoire.net> <20150701.083505.514312490268737442.devel@pollock-nageoire.net> Date: Wed, 01 Jul 2015 09:31:35 -0400 In-Reply-To: <20150701.083505.514312490268737442.devel@pollock-nageoire.net> (Pierre Lorenzon's message of "Wed, 01 Jul 2015 08:35:05 +0200 (CEST)") User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/25.0.50 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.3 (/) X-Debbugs-Envelope-To: 20914-done Cc: 20914-done@debbugs.gnu.org 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.3 (/) > Sorry in fact it works when patching and recompiling the whole > stuff.Recompiling only cl-preloaded.el is not enough. As the name suggests, cl-preloaded is ... preloaded into the "emacs" executable, so you need to recompile cl-preloaded.elc and then re-dump src/emacs. > Anyway copy-tree should be used and not copy-sequence for the > properties. Otherwise properties are not eq but car of them are > eq and that's not what we want. Oops, good point, tho copy-tree isn't right either (we don't want to copy the actual values). I installed the patch below, Stefan diff --git a/lisp/emacs-lisp/cl-preloaded.el b/lisp/emacs-lisp/cl-preloaded.el index ed0639b..60f6542 100644 --- a/lisp/emacs-lisp/cl-preloaded.el +++ b/lisp/emacs-lisp/cl-preloaded.el @@ -195,7 +195,7 @@ (:constructor nil) (:constructor cl--make-slot-descriptor (name &optional initform type props)) - (:copier cl--copy-slot-descriptor)) + (:copier cl--copy-slot-descriptor-1)) ;; FIXME: This is actually not used yet, for circularity reasons! "Descriptor of structure slot." name ;Attribute name (symbol). @@ -205,6 +205,11 @@ ;; :documentation, :protection, :custom, :label, :group, :printer. (props nil :type alist)) +(defun cl--copy-slot-descriptor (slot) + (let ((new (cl--copy-slot-descriptor-1 slot))) + (cl-callf copy-alist (cl--slot-descriptor-props new)) + new)) + (cl-defstruct (cl--class (:constructor nil) (:copier nil)) From unknown Mon Aug 11 13:49:26 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Thu, 30 Jul 2015 11: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