import and module names question
Ary Borenszweig
ary at esperanto.org.ar
Mon Jan 14 16:38:28 PST 2008
Thanks Jarrett.
Jarrett Billingsley escribió:
> "Ary Borenszweig" <ary at esperanto.org.ar> wrote in message
> news:fmbqi6$o01$1 at digitalmars.com...
>> I'm currently testing the semantic analysis of Descent, to match it with
>> DMD's. I'm trying to get zero errors on phobos. There's one thing I don't
>> understand. In module internal.gc.gc there's this line:
>>
>> public import gcx;
>>
>> At the root of phobos there is no file named gcx.d, but in internal/gc/
>> there is one. That file doesn't have a module declaration (no "module
>> ...;"). So I thought "Oh, since it doesn't have a module declaration, the
>> module's name is gcx (the filename minus .d), and that's why the public
>> import works". But... When compiling this piece of code:
>>
>> ---
>> import internal.gc.gc;
>> ---
>>
>> I get:
>> ..\dmd\bin\..\src\phobos\internal\gc\gc.d(37): module gcx cannot read file
>> 'gcx.d'
>>
>> So... is there an error in internal.gc.gc? If so... how does phobos gets
>> compiled? Should I ignore that kind of errors while testing Descent on
>> phobos?
>
> The GC is compiled as a single piece of the library. If you were to compile
> gc.d from the /internal/gc directory, you would import gcx.d by using
> "import gcx;", which is exactly what's going on here.
>
> The downside is that if you're _not_ compiling from /internal/gc, you can't
> import internal.gc.gcx, since now it's nested in a directory, so the FQN now
> becomes "internal.gc.gcx".
>
> So either skip that dir when testing Descent, or set your path to it when
> testing it so that gcx comes into the "root" namespace.
>
>
More information about the Digitalmars-d-learn
mailing list