Colin Putney uploaded a new version of Environments to project The Trunk:
http://source.squeak.org/trunk/Environments-cwp.48.mcz ==================== Summary ==================== Name: Environments-cwp.48 Author: cwp Time: 29 March 2014, 12:42:00.257 pm UUID: 59039bca-7da2-4495-a5d8-8e962783c828 Ancestors: Environments-cwp.47 Clean up observers when destroying an environment. =============== Diff against Environments-cwp.47 =============== Item was changed: Object subclass: #BindingPolicy + instanceVariableNames: 'policy environment addSelector removeSelector' - instanceVariableNames: 'namespace policy next environment addSelector removeSelector' classVariableNames: '' poolDictionaries: '' category: 'Environments-Policies'! Item was added: + ----- Method: BindingPolicy>>environment (in category 'as yet unclassified') ----- + environment + ^ environment! Item was added: + ----- Method: BindingPolicy>>removeObserver: (in category 'initialize-release') ----- + removeObserver: anEnvironment + environment removeObserver: anEnvironment ! Item was changed: + ----- Method: Environment>>addObserver: (in category 'observing') ----- - ----- Method: Environment>>addObserver: (in category 'accessing') ----- addObserver: anObject observers add: anObject! Item was added: + ----- Method: Environment>>declarations (in category 'declaring') ----- + declarations + ^ Array streamContents: + [:out | declarations associationsDo: + [:ea | out nextPut: ea]]! Item was changed: ----- Method: Environment>>destroy (in category 'initialize-release') ----- destroy + + self allClasses do: [:ea | ea removeFromSystem]. + policies do: [:ea | ea removeObserver: self]. + observers do: [:ea | ea stopObserving: self].! - self allClasses do: [:ea | ea removeFromSystem]! Item was changed: + ----- Method: Environment>>isUndeclared: (in category 'declaring') ----- - ----- Method: Environment>>isUndeclared: (in category 'undeclared') ----- isUndeclared: aSymbol ^ undeclared includesKey: aSymbol! Item was changed: + ----- Method: Environment>>purgeUndeclared (in category 'declaring') ----- - ----- Method: Environment>>purgeUndeclared (in category 'undeclared') ----- purgeUndeclared undeclared removeUnreferencedKeys! Item was changed: + ----- Method: Environment>>removeObserver: (in category 'observing') ----- - ----- Method: Environment>>removeObserver: (in category 'accessing') ----- removeObserver: anObject + observers remove: anObject ifAbsent: []! - observers remove: anObject! Item was added: + ----- Method: Environment>>stopObserving: (in category 'observing') ----- + stopObserving: anEnvironment + policies := policies reject: [:ea | ea environment == anEnvironment].! Item was changed: + ----- Method: Environment>>undeclare: (in category 'declaring') ----- - ----- Method: Environment>>undeclare: (in category 'undeclared') ----- undeclare: aSymbol ^ (undeclared bindingOf: aSymbol) ifNil: [undeclared add: aSymbol => nil]! Item was changed: + ----- Method: Environment>>undeclare:from: (in category 'declaring') ----- - ----- Method: Environment>>undeclare:from: (in category 'undeclared') ----- undeclare: aSymbol from: aNamespace | binding | binding := self undeclare: aSymbol. (aNamespace bindingOf: aSymbol) ifNotNil: [:old | aNamespace removeKey: aSymbol. old becomeForward: binding]. ^ binding! |
Free forum by Nabble | Edit this page |