[squeak-dev] The Trunk: Environments-cwp.48.mcz

commits at source.squeak.org commits at source.squeak.org
Sat Mar 29 17:42:26 UTC 2014


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!



More information about the Squeak-dev mailing list