On Monday, 24 February 2014 at 08:55:02 UTC, Gary Willoughby
wrote:
On Monday, 24 February 2014 at 08:41:06 UTC, Steve Teale wrote:
What I wanted was functions that were declared in a base class
as 'cumulative', or something similar. They would have been
generally like virtual functions, except that any derived
class that wanted to do something extra - as opposed to
something different, would simply define an 'extend', and just
specify the extra code. The compiler would then automatically
add a call to the same function in whatever base class last
defined or extended the method.
This exists but it's not automatic.
I think the point is that the super.foo() call is enforced.
Is it possible to write a @cumulative annotation to detect
missing calls? Example:
class Base {
@cumulative void foo() {}
}
class Bar : Base {
void foo() {} // compile error, no super.foo() call
}
It should probably get another name like @overrideExtends.