On Tue, 17 Jun 2014 15:02:33 -0400, Pavel <phond...@gmail.com> wrote:

Hello!

import std.stdio;

interface I {
        
}

interface B : I {
        void test();
}

interface C : I {
        void test1();
}

class A : B, C {
   override void test() {}
   override void test1() {}
}

void main() {
        A a = new A();
        I b = cast(B)a;
        I c = cast(C)a;

writeln(cast(void*)a, " ", cast(void*)b, " ", cast(void*)c); // 1EE1FE0 1EE1FE8 1EE1FEC

b and c should be identical IMO. This means there are 2 entries for I inside the object, which is a waste of space.


assert (a is b); // OK

This should also fail. It seems like a bug to me. 'is' should compare pointers, not anything else.

-Steve

Reply via email to