The Trunk: Environments-cwp.48.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Environments-cwp.48.mcz

commits-2
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!