Thread overview
Modules/packages and cryptic errors
Oct 31, 2009
al
Oct 31, 2009
Frank Benoit
Oct 31, 2009
al
Oct 31, 2009
Frank Benoit
October 31, 2009
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?

October 31, 2009
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)
October 31, 2009
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?


October 31, 2009
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.