On Wednesday, 31 July 2013 at 13:19:46 UTC, dennis luehring wrote:
Am 31.07.2013 14:35, schrieb JS:
On Wednesday, 31 July 2013 at 12:23:42 UTC, dennis luehring wrote:
Am 31.07.2013 14:09, schrieb JS:
It would be nice to be able to have a precompilation step that produces a d output file that is the "mixed down" version with all the string mixins computed. This would allow one to look at
the files, allow better code analysis/error messages, and
intellisense and other things to be useful.

A simple compiler switch would do the trick to enable such a
feature. *.dc files could be generated, or whatever, for each d
file if it uses string mixins(I suppose template mixins could
also be reduced).

what about something that catches mixin results into a static
compiletime strings

template GenStruct(string Name, string M1)
{
   const char[] GenStruct = "struct " ~ Name ~ "{ int " ~ M1 ~
"; }";
}

which generates:

struct Foo { int bar; }

catch_generated_output(my_mixin_output)
{
 mixin(GenStruct!("Foo", "bar"));
}

pragma(msg, my_mixin_output);

prints:

struct Foo { int bar; }


I already do that...

it was just a proposal to have something between all (on commandline) and areas of the source

>When you do that with nested templates it
> creates a huge mess... also errors are useless... as the
point to
> the mixin string.

and what does a complete output help then better?

Because it won't double up on pragmas.

If you nest templates using your method, which I do, then you will get multiple pragma outputs but you'll always only have one string mixin.

the processed output will be actual D code, not a bunch of pragma messages, which could be anything... even invalid D code if they are formatted that way.

Reply via email to