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.