Fields with the same name not causing a warning?
Vinay Sajip
vinay_sajip at yahoo.co.uk
Fri Nov 16 20:13:42 UTC 2018
On Friday, 16 November 2018 at 19:12:42 UTC, Dennis wrote:
> If something is definitively wrong, then it should be an error.
> If it's not definitively wrong, then the compiler shouldn't say
> anything about it, and it should be left up to a linter tool of
> some kind like dcd."
>
> https://forum.dlang.org/post/mailman.3986.1537881312.29801.digitalmars-d@puremagic.com
>
Thanks for that link, it helps to understand the thinking behind
the way things are.
> The language design could be fixed by requiring the use of the
> `override` keyword like in C#. However, in D it *might* make
> generic code (with mixins) more complicated, though I
> personally have never found a use for hiding member variables
> so I don't know the rationale.
More complicated for the compiler writers, or users of
mixins/generics? In any case, the example I showed was more
commonplace than mixins and templates. Perhaps the default should
be to fail compilation with an error, and allow `override` when
someone actually wants to hide/shadow members in base classes,
for whatever reason. I suggested "warning" rather than "error" in
the OP, because I didn't know the philosophy behind warnings in D
that you've now made me aware of. But presumably making it an
error would potentially be a breaking change?
More information about the Digitalmars-d-learn
mailing list