Well if you are browsing from a console like interface, then yes,
these might be useful.

Let me make some funky suggestions with pure sugar, just to let you
type less in a console:

If you want sub implementors, then use Bag / for telling to look under
Bag hierarchy
(Bag />> #at:)

For reversing the direction and look super, it can be nothing else but
a backslash
(Bag \>> #at:)

It also works with super super
(Bag \\>> #at:)

Requesting all the super implementors requires a wild card of course
(Bag \*>> #at:)

If you want both, it could have been with /\>> but it is much simpler
with a single wild card
(Bag *>> #at:)

Just reverse the >> and...
(Bag << #at:) could return the senders of #at: within Bag.

If you don't like it, I have an excuse: it's late here ;)
Bye

Nicolas

2011/9/1 Nicolas Cellier <[email protected]>:
> 2011/9/1 Camillo Bruni <[email protected]>:
>>
>> On 2011-09-01, at 00:54, Nicolas Cellier wrote:
>>> 2011/9/1 Camillo Bruni <[email protected]>:
>>>> Today on the train I was a bit bored on what I can do with CompiledMethods…
>>>>
>>>> It seems like there are no inspection methods on CompiledMethods. Now I 
>>>> lets say I use Pharo from the command line (we're almost there…) then I 
>>>> would like to have a small interface to browse and navigate through 
>>>> methods…
>>>>
>>>> (Object >> #at:) overrides      "return all direct overrides of this 
>>>> method"
>>>> (Bag >> #at:) super             "return the method I override"
>>>> (Bag >> #at:) superChain        "return all implementations in 
>>>> superclasses"
>>>> (Object >> #name) senders
>>>> (Object >> #name) implementors
>>>>
>>>> instead of doing something like
>>>>
>>>> SystemNavigation default allCallsOn: #name  "(BTW I would prefer 
>>>> allSendersOf: #name)"
>>>>
>>>> What do you think? Does this make sense or not?
>>>>
>>>> cami
>>>>
>>>
>>> I'm not convinced.
>>> (Object >> #name) senders
>>> 1) works only if you know a class that implements #name
>>> 2) technically it won't return the senders of (Object >> #name) but
>>> the senders of (AnyOtherClass >> #name)
>>
>> Yes this is absolutely correct. But I think might have not been clear about 
>> my intentions. I do not want to replace SystemNavigation default * calls. 
>> But make sure that once you actually have a CompiledMethod you can browse 
>> from there on.
>> Thats what the (Object >> #name) actually should mean, I should have chosen 
>> some better example like (String >> #printOn:) or so.
>>
>>
>>> (Object >> #name) implementors
>>> 1) same as above, you must first know an implementor…
>>
>> Again, you start from an existing implementation (Object >> #name) just 
>> happens to be a random example..
>>
>>> (Bag >> #at:) super /superChain
>>> is a bit better, but there is again no garanty that Bag implements
>>> at:, still I might want to see all implementors in superclasses.
>>
>> Nope, (Bag >> #at:) will fail if the method doesn't exist.
>>
>>> Nicolas
>>
>>
>> I guess what you want meant is the same navigation interface on Symbol:
>>
>> #name implementors
>> #foo:bar: senders
>> #at: superChain: Bag          "definitely needs another name :)"
>> #at: implementorsAbove: Bag   "might be better…"
>>
>> cami
>>
>
> Yes, but this will reopen the Symbol/Selector thread ;)
>
> Nicolas
>

Reply via email to