On Wednesday, 31 July 2013 at 13:37:58 UTC, Dicebot wrote:
On Wednesday, 31 July 2013 at 13:25:45 UTC, JS wrote:
On Wednesday, 31 July 2013 at 13:19:46 UTC, dennis luehring
>When you do that with nested templates it
> creates a huge mess... also errors are useless... as the
point to
> the mixin string.

There is one idiom for debugging string mixin mess:
098: // pragma(msg, "mixin_id:");
099: // pragma(msg, generated_code);
100: #line 1 "mixin_id"
101: mixin(generated_code)
102: #line 103 __FILE__

Not very convenient, but enough to get the job done.

Sonke had nice idea to improve compiler by storing mixin id as part of filename an preserving line numbers as-is. Somewhat breaking change though.

I already have a method where I use level to store the nesting level, somewhat inconvenient but it allows me to not show any nested calls, just the top most template call...

But it doesn't help with intellisense, which thinks the structs/classes are empty because I generate everything with mixins(or almost everything at this point)... and is still hard to read. I'd rather be able to look at a complete D source to see if anything is out of place then look at a build console output(which may contain other information and doesn't show much context for the mixin).

Reply via email to