Clarification about compilation model and the mapping of package names to directory.
Bruno Medeiros via Digitalmars-d
digitalmars-d at puremagic.com
Fri Apr 29 07:32:05 PDT 2016
Imagine you have a module "main.d" with the line `import xxx.foo;`, and
you have a file "foo.d" with the module declaration `module xxx.foo;`.
Now imagine the files are laid out like this:
src/main.d
src/foo.d
Is this valid, should these files compile? Currently DMD will fail if
each file is compiled individually (because it expects `xxx.foo` to be
in "src/xxx/foo.d", *but* it will succeed if all files are supplied to
DMD in the same command-line.
Now, while it might not be the remit of the compiler to define a
standard of the compilation model, and how source modules are supposed
to be laid out in a project's directory, it is at the very least the
responsibility of the DUB spec to do so.
And if DUB is to become the official bundle manager, this behavior
should be clarified, because actually, this non standard layout
currently works under DUB (because DUB supplies all source files in one
single DMD invocation). But DUB and other tools need to know if this is
actually valid or not, and if it's not, there should be some compiler
switch to error out on situations like those.
FYI, this issue came up because the DDT IDE failed to understand such
non-standard module layout, according to a user report (
https://groups.google.com/d/msg/ddt-ide/Qf8PeQcujbM/UcdRS7VKLwAJ ).
--
Bruno Medeiros
https://twitter.com/brunodomedeiros
More information about the Digitalmars-d
mailing list