[armedbear-ticket] [armedbear] #106: DEFSTRUCT :include with :conc-name

armedbear armedbear-devel at common-lisp.net
Mon Aug 30 07:06:34 UTC 2010


#106: DEFSTRUCT :include with :conc-name
------------------------+---------------------------------------------------
 Reporter:  ehuelsmann  |       Owner:  nobody
     Type:  defect      |      Status:  new   
 Priority:  major       |   Milestone:        
Component:  libraries   |     Version:        
 Keywords:              |  
------------------------+---------------------------------------------------
 Juliusz Chroboczek Juliusz.Chroboczek at pps-jussieu-fr  writes

 Consider the following:

    (defstruct item
      a)

    (defstruct (item1
                 (:include item)
                 (:conc-name item-))
      b)

    (defun abcl-bug ()
      (item-a (make-item :a 'a)))

 According to the last paragraph of the description of the description
 of :conc-name in the defstruct section of the CLHS, this is legal.
 However, abcl says:

   ABCL-BUG(6): (abcl-bug)
   #<THREAD "interpreter" {108F8E0}>: Debugger invoked on condition of type
   SIMPLE-TYPE-ERROR
     The value #<ABCL-BUG::ITEM {537935}> is not of type ABCL-BUG::ITEM1.
   Restarts:
     0: TOP-LEVEL Return to top level.
   [1] ABCL-BUG(7):


 The section he's referring to is this bit which is part of the DEFSTRUCT
 documentation for the :conc-name keyword argument:

 Whether or not the :conc-name option is explicitly supplied, the following
 rule governs name conflicts of generated reader (or accessor) names: For
 any structure type S1 having a reader function named R for a slot named X1
 that is inherited by another structure type S2 that would have a reader
 function with the same name R for a slot named X2, no definition for R is
 generated by the definition of S2; instead, the definition of R is
 inherited from the definition of S1. (In such a case, if X1 and X2 are
 different slots, the implementation might signal a style warning.)

-- 
Ticket URL: <http://trac.common-lisp.net/armedbear/ticket/106>
armedbear <http://common-lisp.net/project/armedbear>
armedbear


More information about the armedbear-ticket mailing list