Accessor redefinition fails because of old accessor name
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
SBCL |
Fix Released
|
Low
|
Unassigned |
Bug Description
When redefining an accessor, SB-PCL:
find the generic function named by the old accessor name using
ENSURE-
the GF. If the old name does not name a function, or if the old name
does not name a generic function, no attempt to find the GF or remove
any methods is made.
However, if an unrelated GF with an incompatible lambda list exists,
the class redefinition will fail when SB-PCL:
tries to find and remove a method with an incompatible lambda list
from the unrelated generic function.
If Nikodemus understands this bug correctly, this has been fixed somewhere
in the 0.8.21.45 - 1.0.23 interval. Test-case below.
(defclass foo ()
((slot :accessor foo-slot)))
(fmakunbound 'foo-slot)
(defgeneric foo-slot (x y z))
(defclass foo ()
((slot :accessor foo-slot-value)))
description: | updated |
Changed in sbcl: | |
importance: | Undecided → Low |
status: | New → Confirmed |
description: | updated |
Changed in sbcl: | |
status: | Confirmed → Invalid |
Changed in sbcl: | |
status: | Invalid → Confirmed |
Test-case works in 1.0.23.