digitalmars.D.learn - Undescriptive linker error. (bug?)
- Sjoerd Nijboer (22/22) Apr 05 2019 module mymodule;
- Adam D. Ruppe (8/12) Apr 05 2019 It looks like the compiler is treating that as a function
- Sjoerd Nijboer (5/6) Apr 05 2019 It errors with the highly descriptive errormessage:
module mymodule;
class Foo{}
Foo Bar()
{
Foo foo();
return foo;
}
int main()
{
auto foo = Bar();
return 0;
}
This code doesn't compile with a linker error that there's a
missing symbol for `Foo Bar()` on windows.
After all, `Foo foo();` isn't legitimate D.
But why does it return a linker error?
shouldn't it give an error that is more descriptive about a class
instance being wrong?
I feel like this would be a common thing people try to write.
Especially in templates this would become difficult to narrow
down.
Apr 05 2019
On Friday, 5 April 2019 at 21:59:35 UTC, Sjoerd Nijboer wrote:Foo Bar() { Foo foo();It looks like the compiler is treating that as a function prototype without a body (that just happens to be nested in another function).return foo;And then, this foo is given the optional parens treatment, as if it was a call to foo() of the given function, which is why the linker complains. Weird combination of cases that maybe should be illegal.
Apr 05 2019
On Friday, 5 April 2019 at 22:08:50 UTC, Adam D. Ruppe wrote:Weird combination of cases that maybe should be illegal.It errors with the highly descriptive errormessage: app.obj(app) Error 42: Symbol Undefined __D8mymodule3BarFZ3fooMFZCQx3Foo Error: linker exited with status 1
Apr 05 2019








Sjoerd Nijboer <dlang sjoerdnijboer.com>