Opened 10 years ago

Closed 10 years ago

#750 closed defect (fixed)

DEFSTRUCT breakage introduced in 14305

Reported by: ivan4th Owned by: rme
Priority: normal Milestone:
Component: Compiler Version: trunk
Keywords: defstruct miscompilation Cc:


The attached code was extracted from cl-yacc which stopped working after commit 14305 (noticed it when trying to compile plexippus xpath). cl-yacc itself was tested for this problem only on ARM at the moment but the test code was also tried on x86_64 with similar results. The strict type checks for structure slots accessor break cl-yacc code because defstruct stores invalid type info for accessors for inherited slots if the inheriting structure uses the same :conc-name as the :include'd one. I guess cl-yacc may not be the only victim of the problem. Sorry, no patch this time as perhaps DEFSTRUCT stuff needs to be reworked and you know better how it should look after that.

Another related problem I noticed is that REMOVE-STRUCTURE-DEFS function invoked by DEFSTRUCT expansion removes inherited accessors too and seems like after that they don't always get redefined.

Attachments (1)

defstruct-breakage.lisp (772 bytes) - added by ivan4th 10 years ago.

Download all attachments as: .zip

Change History (5)

Changed 10 years ago by ivan4th

comment:1 Changed 10 years ago by ivan4th

  • Summary changed from DEFSTRUCT breakage due introduced in 14305 to DEFSTRUCT breakage introduced in 14305

comment:2 Changed 10 years ago by rme

  • Owner set to rme

comment:3 Changed 10 years ago by rme

(In [14345]) In define-compile-time-structure, don't add refinfo for inherited slots. This addresses ticket:750.

comment:4 Changed 10 years ago by rme

  • Resolution set to fixed
  • Status changed from new to closed

(In [14505]) In REMOVE-STRUCTURE-DEFS, don't remove inherited accessors.

Closes ticket:750.

Note: See TracTickets for help on using tickets.