generative programming and debugging

Timon Gehr timon.gehr at gmx.ch
Wed Oct 19 03:32:15 PDT 2011


On 10/19/2011 11:07 AM, Gor Gyolchanyan wrote:
> Do anybody know a good way to (statically) debug a generated code?
> Currently it takes lots of effort to determine the place, where the
> code is being incorrectly generated.

pragma(msg, foo()); // debug
mixin(foo());

You can additionally use something in the lines of the following if it 
is not immediately obvious which function generated the incorrect code.

import std.stdio, std.conv;

string X(string file=__FILE__, int line=__LINE__){
      return "// "~file~"("~to!string(line)~")\n";
}

string foo(){
     string r;
     foreach(i;0..3) r~=q{writeln("hello world");}~X();
     foreach(i;0..3) r~=q{writekn("hello world");}~X(); // whoops
     return r;
}

void main(){
     pragma(msg, foo());
     mixin(foo());
}


It would be kinda nice if the compiler pointed directly to the source 
location that generated the incorrect code.


More information about the Digitalmars-d mailing list