https://issues.dlang.org/show_bug.cgi?id=10806
--- Comment #4 from FeepingCreature <default_357-l...@yahoo.de> --- This problem still exists on master. To demonstrate why it's a problem: import std.stdio; interface A1 { A1 foo(); } interface A2 { A2 foo(); void bar(); } class C1 : A1, A2 { override C1 foo() { return new C1; } override void bar() { writefln("bar"); } } void main() { A2 x = new C1; A2 y = x.foo(); writefln("X: %s", x.classinfo); writefln("Y: %s", y.classinfo); y.bar(); } Note that "A2 y" has an A1 vtable. --