Does D have a tool like pySnooper?

Bastiaan Veelo Bastiaan at Veelo.net
Fri Apr 26 23:08:41 UTC 2019


On Friday, 26 April 2019 at 16:59:15 UTC, H. S. Teoh wrote:
> On Fri, Apr 26, 2019 at 02:33:16PM +0000, Taylor Hillegeist via 
> Digitalmars-d-learn wrote:
>> On Friday, 26 April 2019 at 10:22:49 UTC, Bastiaan Veelo wrote:
> [...]
>> > Proofing the concept:
>> > ---
>> > mixin(snoop(q{
>> >     int fun(int a, int b)
>> >     {
>> >         int c = 3;
>> >         foreach (i; 1 .. 5)
>> >         {
>> >             a += i;
>> >         }
>> >         int d = a + b + c;
>> >         return d;
>> >     }
>> > }));
>> > ---
>> > 
>> > Output:
>> > 2019-Apr-26 10:33:46.0935135 executed line 7:	        int c 
>> > = 3;
>> > 2019-Apr-26 10:33:46.0936716 executed line 10:	            a 
>> > += i;
>> > 2019-Apr-26 10:33:46.0937348 executed line 10:	            a 
>> > += i;
>> > 2019-Apr-26 10:33:46.0937963 executed line 10:	            a 
>> > += i;
>> > 2019-Apr-26 10:33:46.0938583 executed line 10:	            a 
>> > += i;
>> > 2019-Apr-26 10:33:46.0939622 executed line 12:	        int d 
>> > = a + b +
>> > c;
>
> Now *this* is some seriously cool stuff.

Thanks!

A limitation is that snoop() needs to be pure. At one time I had 
a byLine in there, but for some reason byLine is not pure so that 
didn't work. I was almost about to see if I could use libdparse 
in it (run.dlang.io supports it) but I should spend my time on 
preparing for DConf instead... Feel free to play with it, this 
stuff is fun!

Bastiaan.


More information about the Digitalmars-d-learn mailing list