[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug in eql-specializer methods




I think there is a bug in the Victoria Day (5/22/89) Version of PCL
(Xerox CL (Lyric) and Lucid CL 2.1) 
if you define eql-specializer methods for make-instance:

I define a class my-class and a method for make-instance 
to do some specific things when my-class will be instantiated:

    (defclass my-class () ())

    (defmethod make-instance ((class (eql (find-class 'my-class))))
      ;; some specifics
      (format t "make-instance of class ~a~%" class)
      (call-next-method))

Evaluating this call of defmethod an error is signalled:

    No matching method for the generic-function .. UPDATE-CONSTRUCTORS ..
    when called with arguments ((EQL #<Standard-Class A ...>))

If I evaluate the call of defmethod once more the same error is signalled.
It's okay, but now the class standard-class doesn't know its subclasses 
any more:

    (class-direct-subclasses (find-class 'standard-class))

evaluates to nil.

In all cases (you can also try it with metaclasses) the metaclass 
of the class with the eql-specializer method for make-instance 
looses the link to its subclasses.


    Jutta Estenfeld
    Siemens AG, Munich, West Germany
    jutta@ztivax.uucp