Opened 11 years ago

Closed 10 years ago

#106 closed defect (fixed)

DEFSTRUCT :include with :conc-name

Reported by: ehuelsmann Owned by: nobody
Priority: major Milestone:
Component: libraries Version:
Keywords: Cc:
Parent Tickets:

Description

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

Change History (1)

comment:1 Changed 10 years ago by ehuelsmann

Resolution: fixed
Status: newclosed

(In [12933]) Fix #106: DEFSTRUCT :include with :conc-name.

Note: See TracTickets for help on using tickets.