Inheritance of purity

H. S. Teoh hsteoh at quickfur.ath.cx
Thu Feb 16 19:15:45 PST 2012


On Thu, Feb 16, 2012 at 06:49:40PM -0800, Walter Bright wrote:
[...]
> So it occurred to me that an overriding function could *inherit* the
> qualifiers from the overridden function. The qualifiers of the
> overriding function would be the "tightest" of its explicit qualifiers
> and its overridden function qualifiers. It turns out that most
> functions are naturally pure, so this greatly eases things and
> eliminates annoying typing.

I like this idea.


> I want do to this for @safe, pure, nothrow, and even const.

Excellent!


> I think it is semantically sound, as well. The overriding function
> body will be semantically checked against this tightest set of
> qualifiers.
> 
> What do you think?

Semantically, it makes sense. And reducing typing is always good.
(That's one of my pet peeves about Java: too much typing just to achieve
something really simple. It feels like being forced to kill a mosquito
with a laser-guided missile by specifying 3D coordinates accurate to 10
decimal places.)

The one disadvantage I can think of is that it will no longer be clear
exactly what qualifiers are in effect just by looking at the function
definition in a derived class. Which is not terrible, I suppose, but I
can see how it might get annoying if you have to trace the overrides all
the way up the inheritance hierarchy just to find out what qualifiers a
function actually has.

OTOH, if ddoc could automatically fill in the effective qualifiers, then
this will be a non-problem. ;-)


T

-- 
Frank disagreement binds closer than feigned agreement.


More information about the Digitalmars-d mailing list