Class.st
changeset 9371 ebe6d3c65ade
parent 9178 f6ec6e771009
child 9417 e782a74fd958
--- a/Class.st	Wed Jun 14 18:41:08 2006 +0200
+++ b/Class.st	Wed Jun 14 20:29:00 2006 +0200
@@ -1314,7 +1314,7 @@
       longer needed - for example, after some delay when the last instance
       is gone ...)"
 
-    |nm newClass|
+    |nm newClass privateClasses|
 
     self wasAutoloaded ifFalse:[
         "
@@ -1328,24 +1328,29 @@
     ].
 
     "/ cannot unload, if non-autoloaded subclasses exist ...
-    self allSubclassesDo:[:aClass |
-        aClass wasAutoloaded ifFalse:[
-            aClass isPrivate ifFalse:[
-                self warn:('cannot unload ' , self name , ' (' , aClass name , ' requires it)').
+    self allSubclassesDo:[:eachSubclass |
+        eachSubclass wasAutoloaded ifFalse:[
+            eachSubclass isPrivate ifFalse:[
+                self warn:('cannot unload ' , self name , ' (' , eachSubclass name , ' requires it)').
                 ^ false.
             ]
         ]
     ].
 
-    self allSubclassesDo:[:aClass |
-        aClass wasAutoloaded ifTrue:[
-            aClass unload
+    self allSubclassesDo:[:eachSubclass |
+        eachSubclass wasAutoloaded ifTrue:[
+            eachSubclass unload
         ] ifFalse:[
-            aClass removeFromSystem.
+            eachSubclass removeFromSystem.
         ]
     ].
-    self privateClasses do:[:aClass |
-        aClass removeFromSystem.
+    privateClasses := self privateClasses.
+    privateClasses notEmpty ifTrue:[
+        self withoutUpdatingChangesDo:[
+            privateClasses do:[:eachPrivateClass |
+                eachPrivateClass removeFromSystem.
+            ].
+        ].
     ].
     Transcript showCR:'unloading ' , name , ' ...'.
 
@@ -4935,5 +4940,5 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.490 2006-02-21 16:52:07 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.491 2006-06-14 18:29:00 stefan Exp $'
 ! !