On Sun, Oct 16, 2016 at 9:11 PM, Charlie Robbats <charlie.robbats@gmail.com> wrote:
Here, Dmitry, try this code in playground...maybe helps you understand
| lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. (cls methodDictionary at: selector ifAbsent: [nil]) ifNil: [lookupClosure value: cls superclass value: selector] ifNotNil: [:meth | Smalltalk tools browser openOnMethod: meth]]. lookupClosure value: Array value: #at:put:.
Nice example. Slightly improved... | lookupClosure | lookupClosure := []. lookupClosure := [:cls :selector | (cls == nil) ifTrue: [Warning signal: ('selector lookup failure: ', selector)]. cls methodDictionary at: selector ifPresent: [:meth | Smalltalk tools browser openOnMethod: meth] ifAbsent: [lookupClosure value: cls superclass value: selector]]. lookupClosure value: Array value: #at:put:. cheers -ben