'From Squeak3.1alpha of 28 February 2001 [latest update: #4148] on 11 June 2001 at 6:15:10 pm'! "Change Set: ChngSetMetaCls-tk Date: 11 June 2001 Author: Ted Kaehler When a class is defined, nothing about its metaclass is recorded in the ChangeSet. When the metaclass is subsequently changed, such as adding a class-instance-variable, the metaclass is marked 'changed' instead of 'added'. This fix tests if the non-metaclass is marked 'add', and marks the metaclass the same way. This is a very old bug, and was discovered recently by Bob Arning."! !ChangeSet methodsFor: 'change logging' stamp: 'tk 6/11/2001 17:53'! changeClass: class from: oldClass "Remember that a class definition has been changed. Record the original structure, so that a conversion method can be built." class wantsChangeSetLogging ifFalse: [^ self]. isolationSet ifNotNil: ["If there is an isolation layer above me, inform it as well." isolationSet changeClass: class from: oldClass]. class isMeta ifFalse: [self atClass: class add: #change] "normal" ifTrue: [((self classChangeAt: class theNonMetaClass name) includes: #add) ifTrue: [self atClass: class add: #add] "When a class is defined, the metaclass is not recorded, even though it was added. A further change is really just part of the original add." ifFalse: [self atClass: class add: #change]]. self addCoherency: class name. (self changeRecorderFor: class) notePriorDefinition: oldClass. self noteClassStructure: oldClass! !