Are public/private imports implemented?
Tyro[a.c.edwards]
no at spam.com
Mon Jan 21 06:42:59 PST 2008
Ary Borenszweig ????????:
> Again, testing some Descent semantic code, I was getting errors on
> undefined functions.
>
> ---
> module one;
>
> import two;
>
> void foo() {
> char[] srcfilename = std.path.join("one", "two");
> }
> ---
>
> ---
> module two;
>
> import std.path; // same with "private import std.path;"
> ---
>
> I was getting an error on "std.path.join", because since the import on
> module two is private, join is not visible. But DMD seems to compile it
> without problems. What's the truth about imports?
module imports are private by default. This means that since you
"privately" imported std.path into module two, then the entire content
of the std.path module becomes visible to module two, and module two
alone. As a result std.path is not defined in module one. In order for
it to be defined, you would also need to import std.path in module one
or do "public import std.path;" in module two.
Andrew
More information about the Digitalmars-d-learn
mailing list