https://issues.dlang.org/show_bug.cgi?id=14684
Vladimir Panteleev <dlang-bugzi...@thecybershadow.net> changed: What |Removed |Added ---------------------------------------------------------------------------- Status|NEW |RESOLVED Resolution|--- |INVALID --- Comment #3 from Vladimir Panteleev <dlang-bugzi...@thecybershadow.net> --- (In reply to sigsve from comment #0) > I have a structure > src > |-> main.d > |-> RootClass.d > |-> MyPackage/ > |-> PackagedClass.d > > If I add an import in *RootClass* to *myPackage.PackagedClass*, it's fine. This only works when you compile one file at a time, so the compiler does not notice the module name discrepancy. The way you build your project is very unusual, today most D software is built with dub or rdmd. In short: the compiler is not detecting a problem in your project as an optimization. When dealing with packages, all modules need to have a module statement indicating the full name of the module - even if you don't do that and somehow get things to compile, you will likely get linking errors due to differences in full mangled names of symbols. --