digitalmars.D - Re: Cannot import module that has name of a package
- psp250 <psp250 sukimashita.com> Mar 23 2007
Frits van Bommel Wrote:Hennrich Blöbaum wrote:Hi! Look at this:
This gives error: test/foo.d: module test.foo module and package have the same name Is there any reason why this is blocked?
> <test/foo.d> > module test.foo; class bar { static void baz() { // ... Some function implementation ... } } > <test/foo/bar.d> > module test.foo.bar; void baz() { // ... Some completely different function implementation ... } > <main.d> > import test.foo; > import test.foo.bar; void main() { test.foo.bar.baz(); // which function does this call? }
Well, in D as well as other languages, such a file structure/example does not get past compilation and results in a symbol collision. From earlier experiments I know you could compile both modules individually and use a combined header file to attempt to link the object files which would give you a symbol collision error. As reports if you have no collision, it works. So why can't D rather report such collisions at compile time or linking instead? The current way in my point limits the way you can structure your D projects and is something which other languages do better. I think it could greatly enhance maintainability for D file hierarchies (and move it away from the currently really C-like module layouts).
Mar 23 2007