Colin Putney uploaded a new version of Environments to project The Trunk: http://source.squeak.org/trunk/Environments-cwp.20.mcz
==================== Summary ====================
Name: Environments-cwp.20 Author: cwp Time: 2 April 2013, 12:27:08.241 am UUID: ebb65551-c6d9-4a51-b174-6e6306fbf55f Ancestors: Environments-cwp.19
Bindings cleanup stage 2/2.
=============== Diff against Environments-cwp.19 ===============
Item was removed: - LookupKey subclass: #AbstractBinding - instanceVariableNames: '' - classVariableNames: '' - poolDictionaries: '' - category: 'Environments-Core'!
Item was removed: - ----- Method: AbstractBinding class>>convertInstances (in category 'as yet unclassified') ----- - convertInstances - | new old | - old := Binding allInstances. - new := old collect: [:ea | ClassBinding key: ea key value: ea value]. - old elementsForwardIdentityTo: new. - - old := ReadOnlyVariableBinding allInstances. - new := old collect: [:ea | ClassBinding key: ea key value: ea value]. - old elementsForwardIdentityTo: new. - - Environment allInstancesDo: - [:env | - #('contents' 'bindings' 'public' 'undeclared') do: - [:var || dict | - old := Array new writeStream. - new := Array new writeStream. - dict := env instVarNamed: var. - dict associations do: - [:binding | - binding class == Association ifTrue: - [old nextPut: binding. - new nextPut: binding key => binding value]]. - old contents elementsForwardIdentityTo: new contents]]!
Item was removed: - ----- Method: AbstractBinding class>>initialize (in category 'as yet unclassified') ----- - initialize - self convertInstances!
Item was removed: - ----- Method: AbstractBinding>>analogousCodeTo: (in category 'as yet unclassified') ----- - analogousCodeTo: anObject - "For MethodProperties comparison." - ^anObject isVariableBinding - and: [self key = anObject key - and: [self value = anObject value]]!
Item was removed: - ----- Method: AbstractBinding>>canAssign (in category 'as yet unclassified') ----- - canAssign - ^ true!
Item was removed: - ----- Method: AbstractBinding>>isSpecialReadBinding (in category 'as yet unclassified') ----- - isSpecialReadBinding - ^ false!
Item was removed: - ----- Method: AbstractBinding>>isSpecialWriteBinding (in category 'as yet unclassified') ----- - isSpecialWriteBinding - ^ false!
Item was removed: - ----- Method: AbstractBinding>>isVariableBinding (in category 'as yet unclassified') ----- - isVariableBinding - ^ true!
Item was removed: - ----- Method: AbstractBinding>>objectForDataStream: (in category 'as yet unclassified') ----- - objectForDataStream: refStream - "It's not yet clear how serialization should work in the presence of environments" - - self shouldBeImplemented.!
Item was removed: - ----- Method: AbstractBinding>>printOn: (in category 'as yet unclassified') ----- - printOn: aStream - key printOn: aStream. - aStream nextPutAll: '=>'. - self value printOn: aStream!
Item was changed: + Binding subclass: #Alias - AbstractBinding subclass: #Alias instanceVariableNames: 'source' classVariableNames: '' poolDictionaries: '' category: 'Environments-Core'!
Item was changed: LookupKey subclass: #Binding + instanceVariableNames: '' - instanceVariableNames: 'value' classVariableNames: '' poolDictionaries: '' category: 'Environments-Core'!
Item was added: + ----- Method: Binding class>>convertInstances (in category 'as yet unclassified') ----- + convertInstances + | new old | + old := Binding allInstances. + new := old collect: [:ea | ClassBinding key: ea key value: ea value]. + old elementsForwardIdentityTo: new. + + old := ReadOnlyVariableBinding allInstances. + new := old collect: [:ea | ClassBinding key: ea key value: ea value]. + old elementsForwardIdentityTo: new. + + Environment allInstancesDo: + [:env | + #('contents' 'bindings' 'public' 'undeclared') do: + [:var || dict | + old := Array new writeStream. + new := Array new writeStream. + dict := env instVarNamed: var. + dict associations do: + [:binding | + binding class == Association ifTrue: + [old nextPut: binding. + new nextPut: binding key => binding value]]. + old contents elementsForwardIdentityTo: new contents]]!
Item was removed: - ----- Method: Binding class>>key:value: (in category 'as yet unclassified') ----- - key: key value: value - ^ self basicNew initializeWithKey: key value: value!
Item was added: + ----- Method: Binding>>analogousCodeTo: (in category 'as yet unclassified') ----- + analogousCodeTo: anObject + "For MethodProperties comparison." + ^anObject isVariableBinding + and: [self key = anObject key + and: [self value = anObject value]]!
Item was removed: - ----- Method: Binding>>asBinding: (in category 'as yet unclassified') ----- - asBinding: aSymbol - ^ self class key: aSymbol value: value!
Item was changed: ----- Method: Binding>>canAssign (in category 'as yet unclassified') ----- canAssign + ^ true! - ^ false!
Item was removed: - ----- Method: Binding>>initializeWithKey:value: (in category 'as yet unclassified') ----- - initializeWithKey: kObject value: vObject - self initialize. - key := kObject. - value := vObject.!
Item was added: + ----- Method: Binding>>isSpecialReadBinding (in category 'as yet unclassified') ----- + isSpecialReadBinding + ^ false!
Item was changed: ----- Method: Binding>>isSpecialWriteBinding (in category 'as yet unclassified') ----- isSpecialWriteBinding + ^ false! - ^ true!
Item was added: + ----- Method: Binding>>isVariableBinding (in category 'as yet unclassified') ----- + isVariableBinding + ^ true!
Item was added: + ----- Method: Binding>>objectForDataStream: (in category 'as yet unclassified') ----- + objectForDataStream: refStream + "It's not yet clear how serialization should work in the presence of environments" + + self shouldBeImplemented.!
Item was added: + ----- Method: Binding>>printOn: (in category 'as yet unclassified') ----- + printOn: aStream + key printOn: aStream. + aStream nextPutAll: '=>'. + self value printOn: aStream!
Item was removed: - ----- Method: Binding>>value (in category 'as yet unclassified') ----- - value - ^ value!
Item was removed: - ----- Method: Binding>>value: (in category 'as yet unclassified') ----- - value: anObject - (AttemptToWriteReadOnlyGlobal signal: 'Cannot store into read-only bindings') - ifTrue: [value := anObject]!
Item was changed: + Binding subclass: #ClassBinding - AbstractBinding subclass: #ClassBinding instanceVariableNames: 'value' classVariableNames: '' poolDictionaries: '' category: 'Environments-Core'!
Item was changed: ----- Method: Environment>>at:put: (in category 'emulating') ----- at: aSymbol put: anObject | binding | (contents includesKey: aSymbol) ifTrue: [contents at: aSymbol put: anObject] ifFalse: [(undeclared includesKey: aSymbol) ifTrue: [contents declare: aSymbol from: undeclared. contents at: aSymbol put: anObject] ifFalse: + [binding := aSymbol => anObject. - [binding := anObject isBehavior - ifTrue: [Binding key: aSymbol value: anObject] - ifFalse: [Association key: aSymbol value: anObject]. contents add: binding. exports bind: binding]]. ^ anObject !
Item was changed: + Binding subclass: #Global - AbstractBinding subclass: #Global instanceVariableNames: 'value' classVariableNames: '' poolDictionaries: '' category: 'Environments-Core'!
Item was changed: ----- Method: ReadOnlyVariableBinding>>asBinding: (in category '*environments') ----- asBinding: aSymbol + ^ ClassBinding key: aSymbol value: value! - ^ Binding key: aSymbol value: value!
packages@lists.squeakfoundation.org