unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#20914: eieio/slot/group
@ 2015-06-28  6:02 Pierre Lorenzon
  2015-06-29  4:31 ` Pierre Lorenzon
  0 siblings, 1 reply; 7+ messages in thread
From: Pierre Lorenzon @ 2015-06-28  6:02 UTC (permalink / raw)
  To: 20914


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))





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#20914: eieio/slot/group
  2015-06-28  6:02 bug#20914: eieio/slot/group Pierre Lorenzon
@ 2015-06-29  4:31 ` Pierre Lorenzon
  2015-06-29 17:29   ` Pierre Lorenzon
  0 siblings, 1 reply; 7+ messages in thread
From: Pierre Lorenzon @ 2015-06-29  4:31 UTC (permalink / raw)
  To: 20914


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 <devel@pollock-nageoire.net>
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))
> 
> 
> 





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#20914: eieio/slot/group
  2015-06-29  4:31 ` Pierre Lorenzon
@ 2015-06-29 17:29   ` Pierre Lorenzon
  2015-06-30 18:09     ` Stefan Monnier
  0 siblings, 1 reply; 7+ messages in thread
From: Pierre Lorenzon @ 2015-06-29 17:29 UTC (permalink / raw)
  To: 20914

[-- Attachment #1: Type: Text/Plain, Size: 262 bytes --]



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


[-- Attachment #2: eieio-core-0629.patch --]
[-- Type: Text/X-Patch, Size: 1492 bytes --]

--- 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)))

^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#20914: eieio/slot/group
  2015-06-29 17:29   ` Pierre Lorenzon
@ 2015-06-30 18:09     ` Stefan Monnier
  2015-07-01  4:02       ` Pierre Lorenzon
  0 siblings, 1 reply; 7+ messages in thread
From: Stefan Monnier @ 2015-06-30 18:09 UTC (permalink / raw)
  To: Pierre Lorenzon; +Cc: 20914

> 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))





^ permalink raw reply related	[flat|nested] 7+ messages in thread

* bug#20914: eieio/slot/group
  2015-06-30 18:09     ` Stefan Monnier
@ 2015-07-01  4:02       ` Pierre Lorenzon
  2015-07-01  6:35         ` Pierre Lorenzon
  0 siblings, 1 reply; 7+ messages in thread
From: Pierre Lorenzon @ 2015-07-01  4:02 UTC (permalink / raw)
  To: monnier; +Cc: 20914

From: Stefan Monnier <monnier@iro.umontreal.ca>
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





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#20914: eieio/slot/group
  2015-07-01  4:02       ` Pierre Lorenzon
@ 2015-07-01  6:35         ` Pierre Lorenzon
  2015-07-01 13:31           ` Stefan Monnier
  0 siblings, 1 reply; 7+ messages in thread
From: Pierre Lorenzon @ 2015-07-01  6:35 UTC (permalink / raw)
  To: monnier; +Cc: 20914



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 <devel@pollock-nageoire.net>
Subject: bug#20914: eieio/slot/group
Date: Wed, 01 Jul 2015 06:02:28 +0200 (CEST)

> From: Stefan Monnier <monnier@iro.umontreal.ca>
> 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
> 
> 
> 





^ permalink raw reply	[flat|nested] 7+ messages in thread

* bug#20914: eieio/slot/group
  2015-07-01  6:35         ` Pierre Lorenzon
@ 2015-07-01 13:31           ` Stefan Monnier
  0 siblings, 0 replies; 7+ messages in thread
From: Stefan Monnier @ 2015-07-01 13:31 UTC (permalink / raw)
  To: Pierre Lorenzon; +Cc: 20914-done

> 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))





^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2015-07-01 13:31 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-28  6:02 bug#20914: eieio/slot/group Pierre Lorenzon
2015-06-29  4:31 ` Pierre Lorenzon
2015-06-29 17:29   ` Pierre Lorenzon
2015-06-30 18:09     ` Stefan Monnier
2015-07-01  4:02       ` Pierre Lorenzon
2015-07-01  6:35         ` Pierre Lorenzon
2015-07-01 13:31           ` Stefan Monnier

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).