Hi,

I stumbled upon another MetaLink scenario that I am unsure how to implement. I 
want to track method invocations, with receiver, arguments, selector, and 
return value (maybe even signaled exception). I can track the method input with 
a MetaLink installed on an RBMethodNode like this:

MetaLink new
    metaObject: [ :c | Transcript show: c receiver; show: c method selector; 
show: c arguments; cr ];
    selector: #value:;
    arguments: #(context).

and for returns with a MetaLink on RBReturnNodes like this:

MetaLink new
    metaObject: [ :v | Transcript show: v; cr ];
    selector: #value:;
    arguments: #(value)

The problem is though, that not all methods have explicit returns, and some mix 
explicit returns and self returns. I tried installed an #after MetaLink on a 
RBMethodNode, but this fails in many cases. Is there any way that I can 
instrument a method and track receiver, selector, arguments, and returned value 
(even if self) at the same time?

Cheers,
Manuel

Reply via email to