[Seaside] Class Variable Browser Fix

Lukas Renggli renggli at gmail.com
Thu Jul 14 08:12:42 UTC 2011


> If you go to a class variable usage in the browser, say DefaultDirectory in FileDirectory>>default, and select and right click it, Seaside brings up a walk-back.

I cannot reproduce that.

Also note, that this is not Seaside related, but OmniBrowser (I thus
reply to the Pharo list).

> My fix for this re-writes the existing method a little by using '&' instead of the older 'and:', which I find clearer. What I've done is check that the value can respond to #asNode:
>
> globalReference
>        | binding |
>        target hasSelector
>                ifFalse: [ ^ nil ].
>        (requestor selectedClass notNil & (binding := requestor selectedClass bindingOf: target selector) notNil & binding value notNil & (binding value class selectors includes: #asNode))
>                ifTrue: [ ^ binding value asNode ].
>        (binding := Smalltalk classNamed: target selector) notNil
>                ifTrue: [ ^ binding value asNode ].
>        ^ nil

This certainly introduces other bugs. The use of the non-eager #and:
is intentional, because if "requestor selectedClass" is nil,
"requestor selectedClass bindingOf:" is not supposed to be evaluated.

Lukas

-- 
Lukas Renggli
www.lukas-renggli.ch


More information about the seaside mailing list