On 12/22/2012 02:44 AM, Walter Bright wrote:
On 12/21/2012 12:44 AM, Timon Gehr wrote:
... modulo the private symbol clash issue. For all I know it is
deliberate,
which is embarrassing. Other than obviously breaking modularity, it
severely
restricts the usefulness of symbol disambiguation (which it makes
necessary when
it should not be), because the disambiguating alias may introduce more
conflicts
even if it is private, all over the code base.
The reason it is that way is to avoid having it behave gratuitously
differently than how visibility works within classes and structs.
I do not get that. The problem is that private symbols clash with public
symbols in different modules. class and struct members are not even
liable to inter-module overloadset-overlapping, which is necessary for
this to happen.
How it works within classes and structs only affects the exact contents
of error messages anyway, right? (not accessible vs. not defined) I'd
consider that a compiler implementation detail.
Furthermore, I do not think there can be any kind of justification for
the current behaviour in the first place.