need topological sort, when changing subclasses
authorClaus Gittinger <cg@exept.de>
Fri, 31 Jul 1998 19:37:00 +0200
changeset 3703 9ef3fd9febd3
parent 3702 7d6e03420831
child 3704 4dd3cb7ae956
need topological sort, when changing subclasses (after class-instVar change)
Metaclass.st
--- a/Metaclass.st	Fri Jul 31 17:15:53 1998 +0200
+++ b/Metaclass.st	Fri Jul 31 19:37:00 1998 +0200
@@ -329,15 +329,14 @@
     "
      get list of all subclasses - do before superclass is changed
     "
-    allSubclasses := oldClass allSubclasses.
-    allSubclasses := allSubclasses asSortedCollection:[:a :b |
-                                b isSubclassOf:a
-                     ].
+    allSubclasses := oldClass allSubclasses asOrderedCollection.
+    "/ cg: wrong: allSubclasses := allSubclasses asSortedCollection:[:a :b | b isSubclassOf:a].
+    allSubclasses := allSubclasses topologicalSort:[:a :b | b isSubclassOf:a]. 
 
     oldToNew := IdentityDictionary new.
 
     "
-     create a new class tree, based on new version
+     create a new class tree, based on the new version
     "
     allSubclasses do:[:aSubclass |
         oldSuper := aSubclass superclass.
@@ -502,7 +501,7 @@
 
     "Created: / 29.10.1995 / 19:57:08 / cg"
     "Modified: / 1.4.1997 / 15:44:09 / stefan"
-    "Modified: / 29.7.1998 / 12:12:50 / cg"
+    "Modified: / 31.7.1998 / 18:02:00 / cg"
 ! !
 
 !Metaclass methodsFor:'copying'!
@@ -1968,6 +1967,6 @@
 !Metaclass class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Metaclass.st,v 1.130 1998-07-29 11:24:29 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Metaclass.st,v 1.131 1998-07-31 17:37:00 cg Exp $'
 ! !
 Metaclass initialize!