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?)

Reply via email to