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).