www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.bugs - [Issue 17756] New: Ambiguous import form introduces names into the

https://issues.dlang.org/show_bug.cgi?id=17756

          Issue ID: 17756
           Summary: Ambiguous import form introduces names into the global
                    namespace
           Product: D
           Version: D2
          Hardware: x86_64
                OS: Windows
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody puremagic.com
          Reporter: dlang ryanjframe.com

I was testing an import as written at [1], which is not a documented form[2],
and discovered that such imports introduce names into the global namespace:

```
void main() {
    //import io = std.stdio; // Error.
    import io = std.stdio : writeln; // Executes.
    writeln("test");
}
```

It appears that `import io = std.stdio : writeln;` is being interpreted as
`import io = std.stdio : writeln=writeln;`. If this is the case, should an
implicit `name=name` be allowed?


```
void main() {
    import io = std.stdio : writeln; // This builds and runs.

    writeln("test"); // Executes.
    //write("test"); // Error.
    io.writeln("test"); // Executes.
    io.write("test"); // Executes.
}
```

[1]: http://forum.dlang.org/post/hzfvmkrkguqbltmocfeo forum.dlang.org
[2]: Sections 4.6 - 4.8: https://dlang.org/spec/module.html#renamed_imports

--
Aug 16 2017