Why is the error message coming by the end of the compilation?

bauss jj_1337 at live.dk
Sat Apr 14 08:20:51 UTC 2018


On Friday, 13 April 2018 at 21:20:26 UTC, Ikeran wrote:
> On Friday, 13 April 2018 at 20:50:38 UTC, bauss wrote:
>> What I'm doing is basically this:
>>     static foreach (viewResult; generateViewsResult)
>>     {
>>       pragma(msg, "Compiling: " ~ viewResult.name);
>>       mixin(viewResult.source);
>>       pragma(msg, "Compiled: " ~ viewResult.name);
>>     }
>>
>> I would've expect the compiling to be before the error 
>> message, but the compiled after the error message.
>>
>> However it seems like it doesn't do that, but as I can't 
>> reproduce it I'm just wondering what causes it.
>
> The compiler is free to examine your source code in any order 
> that produces the same artifacts on success and self-consistent 
> error messages otherwise. In this case, it evaluated the 
> pragmas and the `mixin` in one pass, then the function body in 
> a separate pass.
>
> The best way I've found to debug mixins is to pragma(msg) the 
> code I wanted to mix in, then insert it myself.

The problem is I can't pragma(msg) the code I want to mixin 
manually since all mixins are dynamically generated. That's why 
my only way is to do it within that static foreach.

I have no control over how many mixins there are and only to an 
extend what they contains.

Basically what I'n doing is I have a file named views.config in 
which each like contains something like:

name|file.dd

The name is what's in viewResult.name and the content of file.dd 
is what's in viewResult.source (But parsed and wrapped into a 
valid D class)

I initially tried to just use __traits(compiles) but it fails 
even on the valid generated D code.


More information about the Digitalmars-d-learn mailing list