Yes, I looked at it and I gave detailed feedback in my previous mails.

No, I won't include it for the reasons given in my previous mails.
Your changes subtly break assumptions made by any user of
BrowserEnvironment (in addition to unnecessarily changing the API),
but I am not going to repeat that and how to solve it differently a
fourth time :-(

Lukas

On 20 March 2011 09:43, Stéphane Ducasse <[email protected]> wrote:
> So lukas
>        - did you check what we did?
>        - will you include in rb packages?
> I need to know.
>
> Stef
>
> On Mar 19, 2011, at 7:55 AM, Stéphane Ducasse wrote:
>
>> Let us be more productive :)
>>
>> A BrowserEnvironment
>>       has an environment input= a systemDictionary (may be we should call it 
>> origin)
>>       a selectedEnviroment = a composite based on the BrowserEnvironment 
>> hierarchy
>>
>> The precondition is that it does not make sense to mix apple and orange so
>> selectedEnvironment inside a composite to be meaningfull should sahre the 
>> same origin.
>>
>> Now it does not mean that we cannot have different composite over the same 
>> origin (ie we have
>> multiple queries over Smalltalk globals) or that we cannot have different 
>> and separate composite
>> working on different origin (ie I have a selection on Pharo1.2 and one on 
>> Pharo1.3 or a remote one).
>>
>>
>> On Mar 18, 2011, at 10:09 PM, Lukas Renggli wrote:
>>
>>> - BrowserEnvironment>>#copyEmpty
>>
>> copyEmpty
>>       ^ self class new on: SystemDictionary new; yourself.
>>
>>> - BrowserEnvironment>>#&
>>
>> & anEnvironment
>>       "If we or anEnvironment includes everything, then just include the 
>> other environment (optimization)"
>>
>>       self isSystem ifTrue: [^anEnvironment].
>>       anEnvironment isSystem ifTrue: [^self].
>>       ^AndEnvironment onEnvironment: self and: anEnvironment
>>
>> does not change
>>
>>
>>> - BrowserEnvironment>>#I
>>
>> | anEnvironment
>>       "If we or anEnvironment includes everything, then return it instead of 
>> creating
>>       an or that will include everything."
>>
>>       self isSystem ifTrue: [^self].
>>       anEnvironment isSystem ifTrue: [^anEnvironment].
>>       ^ OrEnvironment onEnvironment: self or: anEnvironment
>>
>>> - BrowserEnvironment>>#not
>> not
>>       self isSystem ifTrue: [^SelectorEnvironment new].
>>       ^NotEnvironment onEnvironment: self
>>
>>
>>
>>> - BrowserEnvironment>>#isSystem
>> isSystem
>>       ^true
>>
>> No problem (this could be renamed isOriginalInput but we keep it for 
>> compatibiity
>>
>>> - ClassEnvironment>>#classesDo:
>>
>> classesDo: aBlock
>>       classes do: [ :each |
>>               | class |
>>               class := Smalltalk globals at: each ifAbsent: [ nil ].
>>               (class notNil and: [ environment includesClass: class ])
>>                       ifTrue: [ aBlock value: class ] ].
>>       metaClasses do: [ :each |
>>               | class |
>>               class := Smalltalk globals at: each ifAbsent: [ nil ].
>>               (class notNil and: [ environment includesClass: class class ])
>>                       ifTrue: [ aBlock value: class class ] ]
>> We already fixed it.
>>
>> classesDo: aBlock
>>       classes do: [ :each |
>>               | class |
>>               class := self environment at: each ifAbsent: [ nil ].
>>               (class notNil and: [ selectedEnvironment includesClass: class 
>> ])
>>                       ifTrue: [ aBlock value: class ] ].
>>       metaClasses do: [ :each |
>>               | class |
>>               class := self environment at: each ifAbsent: [ nil ].
>>               (class notNil and: [ selectedEnvironment includesClass: class 
>> class ])
>>                       ifTrue: [ aBlock value: class class ] ]
>>
>>> - SelectorEnvironment>>#classesDo:
>>
>> classesDo: aBlock
>>       classSelectors keysDo: [ :each |
>>               | class |
>>               class := Smalltalk globals at: each ifAbsent: [ nil ].
>>               (class notNil and: [ environment includesClass: class ])
>>                       ifTrue: [ aBlock value: class ] ].
>>       metaClassSelectors keysDo: [ :each |
>>               | class |
>>               class := Smalltalk globals at: each ifAbsent: [ nil ].
>>               (class notNil and: [ environment includesClass: class class ])
>>                       ifTrue: [ aBlock value: class class ] ]
>>
>> again we already fixed it.
>>
>> classesDo: aBlock
>>       classes do: [ :each |
>>               | class |
>>               class := self environment at: each ifAbsent: [ nil ].
>>               (class notNil and: [ selectedEnvironment includesClass: class 
>> ])
>>                       ifTrue: [ aBlock value: class ] ].
>>       metaClasses do: [ :each |
>>               | class |
>>               class := self environment at: each ifAbsent: [ nil ].
>>               (class notNil and: [ selectedEnvironment includesClass: class 
>> class ])
>>                       ifTrue: [ aBlock value: class class ] ]
>>
>>
>> So does it make sense?
>> I think so.
>> We just have a common input for a given composite.
>>
>> Stef
>
>
>



-- 
Lukas Renggli
www.lukas-renggli.ch

Reply via email to