Can't use function with same name as module?
evilrat
evilrat666 at gmail.com
Tue Oct 17 07:33:15 UTC 2017
On Tuesday, 17 October 2017 at 06:13:45 UTC, Shriramana Sharma
wrote:
> Hello.
>
> fun.d:
> import std.stdio;
> void fun() { writeln("Hello"); }
>
> main.d:
> import fun;
> void main() { fun(); }
>
> $ dmd -oftest fun.d main.d
> main.d(2): Error: function expected before (), not module fun
> of type void
>
> Why can't I use a function of the same name as the module? IIUC
> import fun imports all the top-level symbols within module fun
> as well as the symbol fun referring to the module itself. This
> is just another case of overloading, no? Can't the compiler
> understand that I am trying to call the function fun.fun() and
> not the module even when it is followed by ()?
>
> Thanks!
Compiler made that way so it doesn't guess or assume too much,
because later on it will bite you when you don't even expect
that, and in some unpredictable place too.
you can always access symbols with fully qualified name, so in
this case
void main() { fun.fun(); }
More information about the Digitalmars-d-learn
mailing list