www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Modules/packages and cryptic errors

reply al <al la.com> writes:
I have main.d with:

import foo.bar

and when I run:

dmd foo/*.d main.d

I get:

module bar is in multiple defined

This is pretty strange. The only way I can silence this error is to add "module
dirname.filename" to *every* file.

Surely there must be less annoying method?
Oct 31 2009
parent reply Frank Benoit <keinfarbton googlemail.com> writes:
al schrieb:
 module bar is in multiple defined
This often indicates a modules file name and the identifier in the "module" statement are unequal (case sensitivity)
Oct 31 2009
parent reply al <al la.com> writes:
Frank Benoit Wrote:

 al schrieb:
 module bar is in multiple defined
This often indicates a modules file name and the identifier in the "module" statement are unequal (case sensitivity)
I have all files and imports lowercase. I have class names following filenames capitalized, but that shouldn't matter, should it? When I run: dmd foo/bar.d is that assuming module foo.bar or bar? If that's the latter, it might explain why I'm getting an error (import finds this file under foo.bar), but how should I compile files then?
Oct 31 2009
parent Frank Benoit <keinfarbton googlemail.com> writes:
al schrieb:
 Frank Benoit Wrote:
 
 al schrieb:
 module bar is in multiple defined
This often indicates a modules file name and the identifier in the "module" statement are unequal (case sensitivity)
I have all files and imports lowercase. I have class names following filenames capitalized, but that shouldn't matter, should it? When I run: dmd foo/bar.d is that assuming module foo.bar or bar? If that's the latter, it might explain why I'm getting an error (import finds this file under foo.bar), but how should I compile files then?
if 'foo' shall be package, in bar.d there should be "module foo.bar;". If imported from somewhere else, it should be "import foo.bar;". Class/Type names should not matter.
Oct 31 2009