On Mon, 29 Aug 2011 16:24:46 -0400, Jonathan M Davis <jmdavisp...@gmx.com>
wrote:
On Monday, August 29, 2011 14:09 Mariusz Gliwiński wrote:
<code>
interface Interface {
Interface method();
}
class Class : Interface {
override Class method() {}
}
</code>
DMD complains it isn't overriding. How should it be according to
specification, and how about making it legal?
It's _not_ overriding. It's implementing an interface method. Those are
two
totally different things. And I think that it's horrible that Java
considers
implementing an interface method as overriding it. I'd _hate_ to see
that in
D.
Then this must be a bug?
interface I
{
void foo();
}
class C : I
{
override void foo(); // compiles
}
I feel override should be *allowed* when implementing interface functions
(but not required). Otherwise, you get into situations where a base class
decides to become abstract (doesn't implement a function), but a derived
class is specifying override (especially if override is required, as is
planned), if that's a compiler error, I think it's a useless error.
-Steve