ClassDefinitionChange.st
changeset 1395 6ea99b157f6b
parent 1318 e31c6a24ab5f
child 1418 12e8c28ea8a4
--- a/ClassDefinitionChange.st	Mon Jul 19 13:58:02 2004 +0200
+++ b/ClassDefinitionChange.st	Thu Aug 12 11:22:13 2004 +0200
@@ -208,12 +208,16 @@
 
 !ClassDefinitionChange methodsFor:'special'!
 
-installAsAutoloadedClassIfNotPrivate
+installAsAutoloadedClassIfPublicWithFilename:aFilenameString
+    "install the class defined by this change as autoloaded.
+     Skip private classes.
+     Enter class file name as abbreviation"
+
     |parseTree sel cat clsName catIdx|
 
     parseTree := Parser parseExpression:self source.
     parseTree isMessage ifFalse:[
-        self error:'should not happen: bad change source'.
+        self error:'bad change source'.
     ].
 
     sel := parseTree selector.
@@ -226,17 +230,24 @@
     clsName := self className asSymbol.
 
     ((Smalltalk includesKey:clsName) not 
-    or:[ (Smalltalk at:clsName) isBehavior not]) ifTrue:[
-         Smalltalk 
-            installAutoloadedClassNamed:clsName 
-            category:cat 
-            package:(package ? Project current package) 
-            revision:nil
+     or:[(Smalltalk at:clsName) isBehavior not
+     or:[(Smalltalk at:clsName) isLoaded not]]) ifTrue:[
+        |pkg|
+
+        pkg := package ? Project current package.   
+        Smalltalk 
+           installAutoloadedClassNamed:clsName 
+           category:cat 
+           package:pkg 
+           revision:nil.
+        aFilenameString notNil ifTrue:[
+            Smalltalk setFilename:aFilenameString forClass:clsName package:pkg.
+        ]
     ]
 ! !
 
 !ClassDefinitionChange class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libbasic3/ClassDefinitionChange.st,v 1.31 2003-08-26 17:43:37 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libbasic3/ClassDefinitionChange.st,v 1.32 2004-08-12 09:21:49 stefan Exp $'
 ! !