On Sunday, 6 January 2019 at 18:38:44 UTC, Benjamin Thaut wrote:
Today I found a bug in my D code.


import std.stdio;

// Type your code here, or load an example.
void grow()
{
    writeln("grow");
}

void someFunc(bool condition)
{
    if(condition)
    {
        void grow();
    }
}


I tried to call the grow function, but accidentially copied the return value alongside the function name. I was wondering why this code compiles without errors. the "void grow();" becomes a no-op. In my opinion this could should not compile. Am I missing something here?

Kind Regards
Benjamin Thaut

import std.stdio;

void grow()
{
    writeln("grow");
}

void someFunc(bool condition)
{
    if(condition)
    {
        void grow();
        pragma(msg, grow.mangleof); // _D3app8someFuncFbZ4growMFZv
    }
}

You can declare functions inside of functions in D. You weren't forward declare grow() in the module namespace, so much as you were forward declaring a new function grow.

Reply via email to