www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - Another interface bug -- double inheritance of same

Different from the last one.
"Double declaring" an interface seems to cause it to ignore the fact 
that a base class implements the interface.

interface Fruit
{
    ...  // some methods
}
interface Vehicle
{
    void drive_around();
    ...  // some other methods
}
interface MobileFruit : Fruit, Vehicle
{
    // nothing here, should inherit from superinterfaces
}

class BaseFruit : Fruit
{
    // implement (some of) Fruit's methods here
}

class MobileFruitGundam : BaseFruit, MobileFruit, Fruit
{
    // implement what's not in BaseFruit already
    ...
}

This complains that MobileFruitGundam doesn't implement Fruit's methods, 
even though they're implemented by BaseFruit.

It's not a huge problem because I think the result still acts like a 
Fruit even without the extra ",Fruit" there -- so
     Fruit f = new MobileFruitGundam;
is still ok, but I think it is an issue for template code that wants to 
derive from interfaces that are passed in as parameters or deduced from 
template parameters.

Does this sound like a bug too?

--bb
Apr 22 2007