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