currently when no module declaration is given, the module name is given by the path base name (__FILE__.baseName.stripExtension).
This is rarely useful (as soon as one has modules nested in packages).
Why not instead infer the module name from the relative path of __FILE__ with respect to the first directory in the import list in which __FILE__ is found:
---- src/foo/bar.d:
// infers 'module foo.bar;' instead of 'module bar;'
void barfun(){}
----
---- src/main.d:
import foo.bar;
void main(){}
----
dmd -Isrc src/main.d