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 <btc@openinworld.com> wrote:
On Sun, Aug 9, 2015 at 3:25 AM, Peter Uhnák <i.uhnak@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