Tools__VariableList.st
changeset 10550 a57b8a71a061
parent 10495 756e95b937cb
child 10871 f3a06b214071
--- a/Tools__VariableList.st	Mon Aug 08 18:27:33 2011 +0200
+++ b/Tools__VariableList.st	Mon Aug 08 18:28:30 2011 +0200
@@ -494,7 +494,7 @@
 
 listOfVariables
     |nameList numClasses classes class commonSubclass showingClassVars
-     sortByName|
+     sortByName classesAlreadyProcessed|
 
     classHolder isNil ifTrue:[
         "/ testing
@@ -521,21 +521,30 @@
         "/ multiple classes - sort alphabetically ...
         "/ unless there is a common subclass ...
         nameList := Set new.
+        classesAlreadyProcessed := IdentitySet new.
         classes do:[:class |
-            showingClassVars ifTrue:[
-                self showingInheritedClassVars ifTrue:[
-                    class theNonMetaclass withAllSuperclassesDo:[:cls|
+            (classesAlreadyProcessed includes:class) ifFalse:[
+                showingClassVars ifTrue:[
+                    self showingInheritedClassVars ifTrue:[
+                        class theNonMetaclass withAllSuperclassesDo:[:cls|
+                            (classesAlreadyProcessed includes:cls) ifFalse:[
+                                nameList addAll:
+                                    (cls classVarNames collect:[:nm|self listEntryForClass: cls name: nm]).
+                                classesAlreadyProcessed add:cls.
+                            ]
+                        ]
+                    ] ifFalse:[
                         nameList addAll:
-                            (cls classVarNames collect:[:nm|self listEntryForClass: cls name: nm])
+                            (class classVarNames collect:[:nm|self listEntryForClass: class name: nm])                            
                     ]
                 ] ifFalse:[
-                    nameList addAll:
-                        (class classVarNames collect:[:nm|self listEntryForClass: class name: nm])                            
-                ]
-            ] ifFalse:[
-                class withAllSuperclassesDo:[:cls|
-                    nameList addAll:
-                                (cls classVarNames collect:[:nm|self listEntryForClass: cls name: nm])                            
+                    class withAllSuperclassesDo:[:cls|
+                        (classesAlreadyProcessed includes:cls) ifFalse:[
+                            nameList addAll:
+                                    (cls classVarNames collect:[:nm|self listEntryForClass: cls name: nm]).                            
+                            classesAlreadyProcessed add:cls.
+                        ]
+                    ]
                 ]
             ]
         ].
@@ -569,8 +578,8 @@
     ^ nameList
 
     "Created: / 05-02-2000 / 13:42:11 / cg"
-    "Modified: / 26-02-2000 / 01:05:36 / cg"
     "Modified: / 28-04-2011 / 13:18:56 / Jan Vrany <jan.vrany@fit.cvut.cz>"
+    "Modified: / 08-08-2011 / 16:20:58 / cg"
 !
 
 postBuildWith:aBuilder
@@ -720,5 +729,5 @@
 !VariableList class methodsFor:'documentation'!
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libtool/Tools__VariableList.st,v 1.11 2011-08-05 11:35:48 vrany Exp $'
+    ^ '$Header: /cvs/stx/stx/libtool/Tools__VariableList.st,v 1.12 2011-08-08 16:28:30 cg Exp $'
 ! !