With this code:
--------------------------------
module test5;
interface I
{
void foo();
}
class A : I
{
void foo() { }
}
class B : A, I
{
alias A.foo foo;
}
void main()
{
}
--------------------------------
I get this error:
--------------------------------
class test5.B interface function I.foo is not implemented
--------------------------------
Does this make sense? I mean, shouldn't the explicit reuse of A.foo in B
be sufficient indication to the compiler that B is satisfying the contract
I? I'm hoping to make use of such subtleties in some code, but first I
have to understand the reasoning behind this. :)
Note that this works if I remove the interface I from B's declaration --
ie "class B: A" -- since, in the D language, B is not required to fulfull
A's interface contract even though it inherits from it.
-JJR