Le 30/03/2012 16:46, Andrei Alexandrescu a écrit :
Starting a new thread from one in announce:

http://prowiki.org/wiki4d/wiki.cgi?LanguageDevel/DIPs/DIP16

Please comment, after which Walter will approve. Walter's approval means
that he would approve a pull request implementing DIP16 (subject to
regular correctness checks).


Destroy!

Andrei

OK, here is an alternative proposal, based on what has been said here, and in other thread. I think it is a better alternative because it is almost already working.

1/ you can defined both a.d (d source code) and a (folder) in the same folder.
2/ import a; will always look for a.d . a folder. a existing isn't an error.
3/ import a.b will look for b.d in a folder. If a.d exists, it isn't an error. 4/ The package a include what in a.d and everything defined in d files in the folder a and its subfolders. 5/ What is publicly imported get automatically aliased in the importing module. See example below if it is not clear :

a.d :

public import a.b;

b.d :

void foo() {}

automatic aliasing in a.d would look like :

public import a.b;

// Automaticaly added aliases :
alias b.foo foo;

And usage from third party code :

import a;

void main() {
    foo();       // OK
    a.foo();     // OK
    a.b.foo();   // OK
}

And with static import :

static import a;

void main() {
    foo();       // Error
    a.foo();     // OK
    a.b.foo();   // OK
}

Reply via email to