On Sunday, 17 June 2018 at 22:55:57 UTC, Walter Bright wrote:
On 6/15/2018 11:08 PM, DigitalDesigns wrote:
When an identifier starts with __, allMembers does not return
it. This is very bad behavior! It can silently create huge
problems if the programmer is not aware of the bug.
It's not a bug, it's quite deliberate:
https://github.com/dlang/dmd/blob/master/src/dmd/traits.d#L1385
Identifiers starting with __ are reserved for the
implementation:
https://dlang.org/spec/lex.html#identifiers
They have implementation-defined behavior. Do not use them in
user code.
If you don't want me to use it then why not give an error instead
of punishing me by introducing very difficult bugs to detect?
Do you really think that everyone that starts using D will
automatically know the traps of __ and avoid it like the plague
just because you said so(even though they probably never actually
seen you say it)?
How about instead of __, you guys use ____ in your code? That
would be more sane than breaking my code because I used an extra
_.
Again, you can justify all you want... it doesn't make it right.