--- a/ClassDefinitionChange.st Fri Feb 08 12:37:43 2002 +0100
+++ b/ClassDefinitionChange.st Fri Feb 08 15:45:03 2002 +0100
@@ -13,7 +13,8 @@
"{ Package: 'stx:libbasic3' }"
ClassChange subclass:#ClassDefinitionChange
- instanceVariableNames:'definition objectType nameSpaceName classType otherParameters'
+ instanceVariableNames:'definition objectType nameSpaceName package classType
+ otherParameters'
classVariableNames:''
poolDictionaries:''
category:'System-Changes'
@@ -69,6 +70,10 @@
objectType := something.
!
+package:aPackageID
+ package := aPackageID
+!
+
source
"return the source of the change"
@@ -123,12 +128,51 @@
!ClassDefinitionChange methodsFor:'queries'!
+definitionSelector
+ |parseTree|
+
+ parseTree := Parser parseExpression:self source.
+ parseTree isMessage ifTrue:[
+ ^ parseTree selector
+ ].
+ self error:'should not happen'.
+!
+
isClassDefinitionChange
^ true
! !
+!ClassDefinitionChange methodsFor:'special'!
+
+installAsAutoloadedClassIfNotPrivate
+ |parseTree sel cat clsName catIdx|
+
+ parseTree := Parser parseExpression:self source.
+ parseTree isMessage ifFalse:[
+ self error:'should not happen: bad change source'.
+ ].
+
+ sel := parseTree selector.
+ (sel endsWith:':privateIn:') ifTrue:[^ self].
+ catIdx := sel keywords indexOf:'category:'.
+ catIdx ~~ 0 ifTrue:[
+ cat := (parseTree args at:catIdx) evaluate.
+ ].
+
+ 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
+ ]
+! !
+
!ClassDefinitionChange class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic3/ClassDefinitionChange.st,v 1.24 2001-11-09 16:20:24 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic3/ClassDefinitionChange.st,v 1.25 2002-02-08 14:45:03 cg Exp $'
! !