--- a/ClassBuilder.st Tue Feb 14 17:23:16 2006 +0100
+++ b/ClassBuilder.st Tue Feb 14 18:58:59 2006 +0100
@@ -16,10 +16,11 @@
instanceVariableNames:'metaclass className environment superClass instanceVariableNames
variable words pointers classVariableNames poolDictionaries
category comment changed classInstanceVariableNames oldMetaClass
- oldClass realNewName buildPrivateClass buildingPrivateClass
- nameKey oldSuperClass newSuperClass superClassChange oldClassVars
- newClassVars oldInstVars newInstVars classVarChange instVarChange
- recompileGlobalAccessTo oldClassToBecomeNew'
+ oldClass oldPoolDictionaries oldSuperClass oldClassVars
+ oldInstVars realNewName buildPrivateClass buildingPrivateClass
+ nameKey newSuperClass superClassChange newClassVars newInstVars
+ classVarChange instVarChange recompileGlobalAccessTo
+ oldClassToBecomeNew'
classVariableNames:''
poolDictionaries:''
category:'Kernel-Support'
@@ -534,13 +535,17 @@
newSuperClass := newClass superclass.
superClassChange := (oldSuperClass ~~ newSuperClass).
+ oldPoolDictionaries := oldClass sharedPools.
+
superClassChange ifFalse:[
(oldClass instSize == newClass instSize) ifTrue:[
(oldClass flags == newClass flags) ifTrue:[
(oldClass name = newClass name) ifTrue:[
(oldInstVars = newInstVars) ifTrue:[
- self handleEasyNewClass:newClass.
- ^ oldClass
+ (oldPoolDictionaries = newClass sharedPools) ifTrue:[
+ self handleEasyNewClass:newClass.
+ ^ oldClass
+ ]
]
]
]
@@ -1736,7 +1741,7 @@
!
setupNewClass:newClass fromOld:oldClass
- |newFlags superFlags nInstVars spec|
+ |newFlags superFlags nInstVars|
(instanceVariableNames size > 0) ifTrue:[
nInstVars := instanceVariableNames countWords.
@@ -1787,9 +1792,9 @@
"/ setting first will make new class clear obsolete classvars
newClass setClassVariableString:(oldClass classVariableString).
newClass setClassFilename:(oldClass classFilename).
- (spec := oldClass classAttributes) notNil ifTrue:[
- newClass classAttributes:spec.
- ].
+ newClass setPrimitiveDefinitions:(oldClass primitiveDefinitionsString).
+ newClass setPrimitiveFunctions:(oldClass primitiveFunctionsString).
+ newClass setPrimitiveVariables:(oldClass primitiveVariablesString).
].
newClass setClassVariableString:classVariableNames.
! !
@@ -1979,7 +1984,11 @@
poolDictionaries asCollectionOfWords do:[:eachPoolName |
|pool|
- pool := environment classNamed:eachPoolName.
+ environment isNamespace ifTrue:[
+ pool := environment classNamed:eachPoolName.
+ ] ifFalse:[
+ pool := environment nameSpace classNamed:eachPoolName.
+ ].
pool isNil ifTrue:[
pool := Smalltalk classNamed:eachPoolName.
].
@@ -2040,5 +2049,5 @@
!ClassBuilder class methodsFor:'documentation'!
version
- ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.46 2006-02-08 15:32:56 cg Exp $'
+ ^ '$Header: /cvs/stx/stx/libbasic/ClassBuilder.st,v 1.47 2006-02-14 17:58:59 cg Exp $'
! !