[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