Temporarily disable all purity for debug prints
spir
denis.spir at gmail.com
Mon Apr 11 15:10:52 PDT 2011
On 04/11/2011 11:27 PM, bearophile wrote:
> From what I am seeing, in a D2 program if I have many (tens or more) pure functions that call to each other, and I want to add (or activate) a printf/writeln inside one (or few) of those functions to debug it, I may need to temporarily comment out the "pure" attribute of many functions (because printing can't be allowed in pure functions).
>
> As more and more D2 functions become pure in my code and in Phobos, something like a -disablepure compiler switch (and printf/writeln inside debug{}) may allow more handy debugging with prints (if the purity is well managed by the compiler then I think disabling the pure attributes doesn't change the program output).
Similar to Adam's idea, I'd like a debug-only func, maybe called 'note'
(because 'log' is too ambiguous). 'log' could do the same thing as writeln;
or even better:
void f (int n) {
note(n*n);
...
}
f(3); // writes: "n*n: 9\n"
Meaning, no need to explicitely type:
note("n*n: ", n*n);
This indeed requires some compiler magic. For simplicity, note could be
non-variadic (--> one note per line, both in code and on output).
In any case, the point is for note to be considered pure, because
debug-output-only. And would not be compiled in -release mode. (nice
side-effect: debug output statements can then stay in code as are)
Denis
--
_________________
vita es estrany
spir.wikidot.com
More information about the Digitalmars-d
mailing list