Ary Borenszweig Wrote: > Ary Borenszweig escribió: > > http://www.youtube.com/watch?v=rtYCFVPfx4M > > Bah... I just realized debugging that kind of things might be really > hart to do. Imagine this: > > --- > char[] something() { > return "x *= 3; x += 4;"; > } > > mixin("int bla(int x) { x *= 2; " ~ something ~ " return 4; }"); > > void main() { > const something = bla(2); > } > --- > > Now I want to debug the invocation of bla: how the variable x is being > modified. But there's no such place in the source code for that > definition (well, there is, but it's split in pieces, and obviously > you'll get lost when debugging). > > So I'm starting to think that the compile-time debugger should work on > the (formatted) compile-time view of the modules. So you'll end up > debugging code like this: > > --- > char[] something() { > return "x *= 3; x += 4;"; > } > > int bla(int x) { > x *= 2; > x *= 3; > x += 4; > return x; > } > > void main() { > const something = bla(2); > } > --- > > But that's way more hard to do than what I'm doing right now. > > Finally, you might want to have both worlds together, like: > > --- > char[] someOtherFunc() { > return "char[] x = \"whatever\";"; > } > > char[] someFunc() { > mixin(someOtherFunc()); > return x; > } > > > mixin(someFunc()); > --- > > Now I want to debug someFunc(). But I also want to see that > someOtherFunc() is expanded well, so I can't just show the compile-time > view of the module, because doing this might have an error already (the > error I want to debug, for example!). (and also the compile-time view > dependens on the function I'm trying to debug) > > Aaah... I give up. > > (I came to this conclusion when trying to debug the scrappes:units project).
NO! Don't give up! I've already started using it, and it's very useful even if it can't debug compile-time-generated code; that's only a very small use case.
