Dlang code mixin output

JS js.mdnq at gmail.com
Wed Jul 31 05:35:34 PDT 2013


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... When you do that with nested templates it 
creates a huge mess... also errors are useless... as the point to 
the mixin string.

Simple examples are easy to come up with but don't demonstrate 
how useless they can be.


More information about the Digitalmars-d mailing list