On Monday, 5 May 2014 at 12:48:11 UTC, Jonathan M Davis via Digitalmars-d wrote:
On Mon, 05 May 2014 15:55:13 +0400
Dmitry Olshansky via Digitalmars-d <digitalmars-d@puremagic.com> wrote:
Why the heck should internal symbols conflict with public from other
modules? No idea.

Because no one has been able to convince Walter that it's a bad idea for private symbols to be visible. Instead, we've kept the C++ rules for that, and they interact very badly with module-level symbols - something that C++
doesn't have to worry about.

As far as I know Walter does not object changes here anymore. It is only matter of agreeing on final design and implementing.

Unfortunately, as I understand it, fixing it isn't quite as straightforward as making private symbols invisible. IIRC, Martin Nowak had a good example as to why as well as a way to fix the problem, but unfortunately, I can't remember
the details now.

I remember disagreeing with Martin about handling protection checks from template instances. Those are semantically verified at declaration point but actual instance may legitimately need access to private symbols of instantiating module (think template mixins). Probably there were other corner cases but I can't remember those I have not been arguing about :)

Anyway, DIP22 is on agenda for DMD 2.067 so this topic is going to be back to hot state pretty soon.

Reply via email to