[armedbear-devel] class-direct-subclasses has duplicates
![](https://secure.gravatar.com/avatar/1acb146697fe261dc4e0c1c04f7508ec.jpg?s=120&d=mm&r=g)
It should be a set according to http://www.alu.org/mop/dictionary.html *Generic Function* *class-direct-subclasses* *class* Returns a set of the direct subclasses of *class*. The elements of this set are class metaobjects that all mention this class among their direct superclasses. The empty set is returned if *class* has no direct subclasses. This value is maintained by the generic functions *add-direct-subclass*<http://www.alu.org/mop/dictionary.html#add-direct-subclass> and *remove-direct-subclass*<http://www.alu.org/mop/dictionary.html#remove-direct-subclass> . (map nil 'print (system:class-direct-subclasses (find-class 'ido-pathway-block))) #<STANDARD-CLASS PARSED-SHEET-INFO-BLOCK {895391}> #<STANDARD-CLASS PARSED-EVIDENCE-BLOCK {C422A5}> #<STANDARD-CLASS PARSED-COMPLEX-BLOCK {90AD53}> #<STANDARD-CLASS PARSED-PROCESS-BLOCK {14D509}> #<STANDARD-CLASS PARSED-HANDLE-BLOCK {5AFFB3}> #<STANDARD-CLASS PARSED-SHEET-INFO-BLOCK {895391}> #<STANDARD-CLASS PARSED-EVIDENCE-BLOCK {C422A5}> #<STANDARD-CLASS PARSED-COMPLEX-BLOCK {90AD53}> #<STANDARD-CLASS PARSED-PROCESS-BLOCK {14D509}> #<STANDARD-CLASS PARSED-HANDLE-BLOCK {5AFFB3}> -Alan
![](https://secure.gravatar.com/avatar/29e40ec843bec4b66414022ddce75718.jpg?s=120&d=mm&r=g)
Hi Alan, On Mon, Jan 18, 2010 at 1:54 AM, Alan Ruttenberg <alanruttenberg@gmail.com> wrote:
It should be a set according to http://www.alu.org/mop/dictionary.html
r12391 *could* fix that. I didn't check, but I did see code unconditionally adding classes to the list of subclasses, so I changed a PUSH to a PUSHNEW. Could you verify that it fixes it? If not, could you provide some sample code on how to get to the situation you have? (Like 3 or 4 class definitions, empty ones)? Hope that helps! Bye, Erik.
![](https://secure.gravatar.com/avatar/1acb146697fe261dc4e0c1c04f7508ec.jpg?s=120&d=mm&r=g)
This fixes it. FWIW, here is the test as it fails previously. Thanks! -Alan CL-USER> (defclass a () ) #<STANDARD-CLASS A {AECB15}> CL-USER> (defclass b (a) ) #<STANDARD-CLASS B {96DEEC}> CL-USER> (defclass b (a) ) #<STANDARD-CLASS B {96DEEC}> CL-USER> (mop::class-direct-subclasses (find-class 'a)) (#<STANDARD-CLASS B {96DEEC}> #<STANDARD-CLASS B {96DEEC}>) On Mon, Jan 18, 2010 at 3:15 PM, Erik Huelsmann <ehuels@gmail.com> wrote:
Hi Alan,
On Mon, Jan 18, 2010 at 1:54 AM, Alan Ruttenberg <alanruttenberg@gmail.com> wrote:
It should be a set according to http://www.alu.org/mop/dictionary.html
r12391 *could* fix that. I didn't check, but I did see code unconditionally adding classes to the list of subclasses, so I changed a PUSH to a PUSHNEW.
Could you verify that it fixes it? If not, could you provide some sample code on how to get to the situation you have? (Like 3 or 4 class definitions, empty ones)?
Hope that helps!
Bye,
Erik.
participants (2)
-
Alan Ruttenberg
-
Erik Huelsmann