>
> You can't search invocations of a particular "class>>method".


So if I understand there's no direct way to do it, and I need to traverse
the AST and do a static analysis.

Unfortunately adding logging will work only if I know that all the senders
will actually send the message, which is definitely not guaranteed here.
(Btw "Transcript crShow:" should be better written as"self crLog:")

What I do in that case is that I select the text "WriteStream on:" and
> "method source with it". But of course, a class side search would be nice.


Nice! I didn't know about this, I always used finder instead.

Thanks,
Peter

On Sun, Aug 9, 2015 at 3:39 AM, Mariano Martinez Peck <marianop...@gmail.com
> wrote:

> What I do in that case is that I select the text "WriteStream on:" and
> "method source with it". But of course, a class side search would be nice.
>
> On Sat, Aug 8, 2015 at 10:07 PM, Ben Coman <b...@openinworld.com> wrote:
>
>> On Sun, Aug 9, 2015 at 3:25 AM, Peter Uhnák <i.uh...@gmail.com> wrote:
>> > So there's method CompiledMethod>>senders,
>> > but the problem is that it just looks for the message symbol and not
>> class.
>> >
>> > so for example:
>> > ~~~~~~~~~~~~~~~~~~~~~
>> > (WriteStream>>on:) senders
>> > ~~~~~~~~~~~~~~~~~~~~~
>> > will also include Object>>asBrick
>> >
>> > Object>>asBrick
>> > ^ GLMMorphBrick on: self asMorph
>> >
>> > because it sends #on: even though it's on completely different object.
>> >
>> > Now I understand that this is a dynamic system, so I will never have all
>> > senders, but this should be resolvable even through static analysis?
>> >
>> > So now my question is: Is there an easy way to retrieve the object to
>> which
>> > the selector is sent?
>> > I can use "CompiledMethod>>messages", but that just returns  "a
>> Set(#asMorph
>> > #on:)" which is useless here.
>> >
>> > So do I need to traverse the AST and find it there?
>>
>> You can't search invocations of a particular "class>>method". You can
>> only search invocations of a "message" unbound from any class.  You
>> can constrain your senders to search to particular packages, but that
>> requires pre-knowledge and may not suit all cases.  In some cases I
>> find adding the following useful...
>>
>> WriteStream>>on:
>>     Transcript crShow: thisContext senders senders printString ,
>>           '-->' , thisContext senders printString ,
>>          thisContext printString.
>>     ....
>>
>> cheers -ben
>>
>>
>
>
> --
> Mariano
> http://marianopeck.wordpress.com
>

Reply via email to