On Saturday, 27 April 2019 at 16:24:40 UTC, Robert M. Münch wrote:
I thought that public only applies to the upward chain, not to the same level.

There is no "same level" really (except for the `package` protection level); it is just inside the module or outside the module for imports.

But I see what you are doing now...

A/c.d
        module A.c;
        struct myOtherStruct {
                myStruct ms;
        }

This will never work in D. The module needs to work by itself. It can see public imports from another module it itself imports:

module A.c;

import A; // thanks to this, it can see a `public import A.a;` from the A package..


But without that explicit import, it cannot see anything outside itself.


You might be able to get away with listing the `public import`s in package.d, and then just `import A;` in each individual module though.

But it won't just inherit stuff from other modules, like C's #include does. A D module is parsed independently of other modules.

works. But this would end up in adding a lot of imports to avoid the "undefined identifier" problem to many files manually and somehow break the DStep workflow.

maybe dstep could automatically add imports to generated files too.

Reply via email to