digitalmars.D.bugs - Multiple interface implementation doesn't seem to work quite right.
- Andy Friesen (32/32) May 30 2004 test.d:
 
test.d:
     interface I1
     {
         void i1();
     }
     interface I2
     {
         void i2();
     }
     interface I3 : I1, I2
     {
     }
     class C1 : I3
     {
         void i1() { printf("i1\n"); }
         void i2() { printf("i2\n"); }
     }
     void f1(I1 i1, I2 i2)
     {
         i1.i1();
         i2.i2();
     }
     int main()
     {
         I3 i3 = new C1();
         f1(i3, i3);
         return 0;
     }
Yields the output:
i1
i1
  -- andy
 May 30 2004
Argh. This is a particularly nasty one. Anyhow, it's fixed now :-)
 Jun 01 2004
I ran into more diamond-shaped interface problems last night, when combined
with the "multiple derivation" shown below. The vTable gets seriously borked
in such cases; it's exasperating :-(
"Andy Friesen" <andy ikagames.com> wrote in message
news:c9ctoa$10k$1 digitaldaemon.com...
 test.d:
      interface I1
      {
          void i1();
      }
      interface I2
      {
          void i2();
      }
      interface I3 : I1, I2
      {
      }
      class C1 : I3
      {
          void i1() { printf("i1\n"); }
          void i2() { printf("i2\n"); }
      }
      void f1(I1 i1, I2 i2)
      {
          i1.i1();
          i2.i2();
      }
      int main()
      {
          I3 i3 = new C1();
          f1(i3, i3);
          return 0;
      }
 Yields the output:
 i1
 i1
   -- andy
 Jun 26 2004








 
 
 
 "Walter" <newshound digitalmars.com> 