June 26, 2018 [Issue 19028] New: Emit warning for identifiers starting with `__` | ||||
---|---|---|---|---|
| ||||
https://issues.dlang.org/show_bug.cgi?id=19028 Issue ID: 19028 Summary: Emit warning for identifiers starting with `__` Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: enhancement Priority: P1 Component: dmd Assignee: nobody@puremagic.com Reporter: regnellday@protonmail.com Identifiers starting with `__` are reserved for compiler and their behaviour is implementation-defined. But compilers do not show warning or error message when you try to use such names. Furthermore, some functions ignore these identifiers and may produce hidden bugs in a code. For example: void main() { writeln([__traits(allMembers, S)]); // will print only ["a"] } struct S { int a; int __refCount; } Documentation of `allMembers` says nothing about this behaviour. Links: https://dlang.org/spec/lex.html#identifiers https://dlang.org/spec/traits.html#allMembers https://github.com/dlang/dmd/blob/2ce74fc1180a3b0ed5e5c29aa79bf3773af5d5b7/src/dmd/traits.d#L1385 https://forum.dlang.org/thread/yauflbmphapnnksckksu@forum.dlang.org -- |
Copyright © 1999-2021 by the D Language Foundation