On Tuesday, 29 April 2014 at 09:57:08 UTC, ketmar wrote:
On Monday, 28 April 2014 at 15:57:16 UTC, anonymous wrote:
`zmod.symbol` works, too.
no, it's not. at least on latest GDC.

Works for me with Ubuntu's gdc 4.8.2-1ubuntu6. My little test case:

my/module_.d:
---
module my.module_;
public import other.module_;
---

other/module_.d:
---
module other.module_;
int symbol;
---

mainprogram.d:
---
module mainprogram;
import zmod = my.module_;
static assert(is(typeof(zmod.symbol) == int)); /* passes */
---

I don't think so. The point of the renamed import is that you have to use the new name.
but i renamed only my.module, not others. nothing hints me that renaming is SO global. it's counterintuitive.

Checking the documentation, it's a little unclear. You might be right in your expectations:

"An import can be specifically declared public, when it will be treated as if any imports of the module with the ImportDeclaration [here: my.module_] also import the public imported modules [other.module_]."[1]

That doesn't mention renamed imports, though. Are those generated imports supposed to be renamed, too? If so (apparently current behaviour), you'd have to write `zmod.symbol`. If not (what you expected), just `symbol` should work.

Personally, I think the current behaviour is fine. Renamed imports are supposed to guard you against name clashes. If public imports wouldn't get renamed, too, that guard would be circumvented.


[1] http://dlang.org/module.html#ImportDeclaration

Reply via email to