On Sunday, 19 February 2017 at 10:15:49 UTC, rikki cattermole
wrote:
What's wrong here?
void main()
{
A bar = cast(A)Object.factory(__MODULE__ ~ ".AA");
bar.foo();
}
Oops. I overdid when trying to create a small example. With the
module it works, but my original program had the module and still
produced an segmentation fault. After some more investigations I
found out, that it was not due to a mistake in the program, but
because rdmd didn't recompile after I called it with an
--extra-file added. Looks like a bug in rdmd... Here is a small
example:
test.d:
module test;
import std.stdio;
void main()
{
B tmp = cast(B)Object.factory("test2.BB");
tmp.m1();
}
interface A { abstract void m1(); }
interface B:A { abstract void m2(); }
class AA:A { override void m1() { writeln("A"); } }
test2.d:
module test2;
import std.stdio;
import test;
class BB:AA,B { override void m2() { writeln("B"); } }
And here is what I get when compiling:
$> rdmd test.d
segmentation fault
$> rdmd --extra-file=test2.d test.d
segmentation fault
$> rm -rf /tmp/.rdmd-1000/
$> rdmd --extra-file=test2.d test.d
A
$> rdmd -version
rdmd build 20170122
[...]
Should I report this bug anywhere (or am I wrong again?)