On Wednesday, 5 June 2013 at 22:31:21 UTC, Andrei Alexandrescu wrote:
https://github.com/D-Programming-Language/dmd/pull/2139

Andrei

I had a spin[1] with it long before Adam Wilson made it so popular topic. Feature was frequently mentioned on IRC as desired. Unfortunately I faced few holes in both Martin's and Andrei's DIPs and gave up on implementing it.

Few issues I remember were:

---

module std.datetime.core;
class Foo {}

module std.datetime.calendar;
class Foo {}

module std.datetime;

public import std.datetime.core;
public import std.datetime.calendar;

module usage;

import std.datetime;

Foo x; // is it std.datetime.core or std.datetime.calender?

// ok workaround..
std.datetime.Foo x; // same issue as above

std.datetime.core.Foo x; // works atleast

---

My point is, are directions Jonathan wants to go are right?
I think std.datetime.Foo shouldn't be available.

I remember also having some issues with ambiguous symbols. I had more corner cases in IRC Logs, but can't find it now.

Also I see we are going with Andrei's DIP route.
It is worth noting that Martin's one may have some additional functionality.

Like glueing modules. Ie.

---

module std.net;

public import std.net.http;
public import std.net.uri;

shared(Uri) uri = new shared(Uri);

---

In Martin's proposal uri symbol is reachable via
std.net.__init__.uri in case of ambiguous. In Andrei's it is unreachable due to package being keyword.

I am glad Walter is tackling it, because it is really useful feature, but please take a chill pill and rethink all corner cases.

[1] https://github.com/nazriel/dmd/tree/dip16++

Reply via email to