Class.st
changeset 5474 c7c69123fd48
parent 5464 af5c4f052b20
child 5514 0db3f902e1df
--- a/Class.st	Tue Jul 18 11:19:26 2000 +0200
+++ b/Class.st	Thu Jul 20 16:02:47 2000 +0200
@@ -1055,11 +1055,29 @@
         ].
     ].
 
+    "/ cannot unload, if non-autoloaded subclasses exist ...
     self allSubclassesDo:[:aClass |
-        aClass unload
+        aClass wasAutoloaded ifFalse:[
+            aClass isPrivate ifFalse:[
+                self warn:('cannot unload ' , self name , ' (' , aClass name , ' requires it').
+                ^ self.
+            ]
+        ]
+    ].
+
+    self allSubclassesDo:[:aClass |
+        aClass wasAutoloaded ifTrue:[
+            aClass unload
+        ] ifFalse:[
+            aClass removeFromSystem.
+        ]
+    ].
+    self privateClasses do:[:aClass |
+        aClass removeFromSystem.
     ].
     Transcript showCR:'unloading ' , name , ' ...'.
 
+    "/ reinstall as autoloaded
     Autoload removeClass:self.    
     nm := name.
     Smalltalk at:nm put:nil.
@@ -4434,5 +4452,5 @@
 !Class class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.373 2000-07-17 17:01:22 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic/Class.st,v 1.374 2000-07-20 14:02:47 cg Exp $'
 ! !