https://issues.dlang.org/show_bug.cgi?id=17907
Steven Schveighoffer <schvei...@yahoo.com> changed: What |Removed |Added ---------------------------------------------------------------------------- CC| |schvei...@yahoo.com --- Comment #3 from Steven Schveighoffer <schvei...@yahoo.com> --- I'm not recommending to reopen, but just to be clear here, the issue is ONLY a problem with top level packages and modules: For example: import std.stdio; void std() {} // error void stdio() {} // ok This limits what you can name your top-level modules and packages, because any time you import something, it defines the symbol in the importing. Public imports don't do this. For example std.stdio publicly imports core.stdc.stdio. But I can define a `core` function in the above example. I know this is because of the rules, and I know that we want to keep things simple. But consider that any library that defines a top-level module (probably because the library is simple) is invading the namespace of whoever imports it. It might be worth considering alternatives to how it's currently designed/implemented, if only just for top-level modules/packages. --