[Issue 17907] New: Can't automatically resolve to function with same name as module
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Tue Oct 17 12:16:55 UTC 2017
https://issues.dlang.org/show_bug.cgi?id=17907
Issue ID: 17907
Summary: Can't automatically resolve to function with same name
as module
Product: D
Version: D2
Hardware: x86_64
OS: Linux
Status: NEW
Severity: enhancement
Priority: P1
Component: dmd
Assignee: nobody at puremagic.com
Reporter: samjnaa at gmail.com
Compiler does not automatically resolve to function with same name as module:
fun.d:
import std.stdio;
void fun() { writeln("Hello"); }
funmain.d:
import fun;
void main() { fun(); }
$ dmd -offun fun.d funmain.d
funmain.d(2): Error: function expected before (), not module fun of type void
However, in case of struct-s and classes with same name, there is no problem:
str.d:
struct str { int a; }
strmain.d:
import str;
void main() { str var; var.a = 2; }
$ dmd -ofstr str.d strmain.d
cla.d:
class cla { int a; }
clamain.d:
import cla;
void main() { auto var = new cla; var.a = 2; }
$ dmd -ofcla cla.d clamain.d
If it is possible with types, and indeed it is meaningful to name a module
after the main type or function defined therein, there seems to be no reason
for not being able to resolve to a function with the same name as a module.
Of course, doing `import fun: fun;` will work, but that is unnecessary
verbosity and is not being required even now in the case of types as shown
above. In D, the compiler is all powerful and can know which resolution of
which symbol is appropriate where. The same capability should apply here also.
Thank you!
--
More information about the Digitalmars-d-bugs
mailing list