[closer-devel] Closer-mop support for ABCL

Rudolf Schlatte rudi at constantly.at
Wed Sep 19 19:02:07 UTC 2012


On Sep 9, 2012, at 18:46, Pascal Costanza <pc at p-cos.net> wrote:

[...]

> On to the next bug:
> 
> CL-USER(1): (use-package :mop)
> T
> 
> CL-USER(2): (defclass my-class (standard-class) ())
> #<STANDARD-CLASS MY-CLASS {5122152B}>
> 
> CL-USER(3): (defmethod slot-unbound ((class my-class) object slot) (print :foo) (call-next-method))
> #<STANDARD-METHOD SLOT-UNBOUND (MY-CLASS T T) {149BE3AA}>
> 
> CL-USER(4): (defclass test () ((slot :accessor test-slot)) (:metaclass my-class))
> #<MY-CLASS TEST {79BC8795}>
> 
> CL-USER(8): (make-instance 'test)
> #<TEST {21BF4C80}>
> 
> CL-USER(9): (slot-boundp * 'slot)
> T
> 
> CL-USER(10): (test-slot **)
> 
> :FOO 
> #<THREAD "interpreter" {12EEA1E7}>: Debugger invoked on condition of type UNBOUND-SLOT
>  The slot SLOT is unbound in the object #<TEST {21BF4C80}>.
> Restarts:
>  0: TOP-LEVEL Return to top level.
> 
> It seems that as soon as a method on slot-unbound is defined, slot-boundp returns t no matter whether the slot is bound or not. This should not be the case.

It's simpler than that - slot-boundp-using-class was just utterly broken for classes with non-standard metaclass.  r14154 has the embarrassing details.

Rudi







More information about the closer-devel mailing list