Got compiler crash in Mangler::mangleFuncType

Jacob Carlborg via Digitalmars-d digitalmars-d at
Sat Mar 25 07:07:59 PDT 2017

On 2017-03-25 09:13, Uranuz wrote:

> I just put debug messages on every `assert` and figured out it fails on
> lines:
>                     bool implicit0 = ( == Tvoid && isMain());
>                     Type tret = implicit0 ? Type.tint32 :;
>                     assert(tret.ty != Tvoid);
>                     if (vresult || returnLabel)
>                         buildResultVar(scout ? scout : sc2, tret);
> I really don't understand what it is... Now I cannot share codebase
> easily. Seems that it fails on my programme `main` function or near
> that, because compiler stack not so deep. There is some check for isMain
> AFAIK... What is this about?

To me it looks like there's some mismatch of the declared return type of 
"main" and what is actually returned. In D it's possible to declare 
"main" to return "void" and the compiler/runtime will automatically 
handle and infer the exit code of the program. Can you show just the 
"main" function?

/Jacob Carlborg

More information about the Digitalmars-d mailing list