On Thursday, 6 January 2022 at 02:47:17 UTC, Steven Schveighoffer
wrote:
Possibly. You see, you are importing another module. Since you
are doing that, the module must participate in cycle detection
at the beginning of running the program.
IC. Had cyclic module dependencies twice within this project.
The way D does this is to store the import graph inside a
`ModuleInfo` struct stored in the object.
When you import this file, the compiler sees that it has
imports, and assumes you must have built the `ModuleInfo` in
some object somewhere, so it outputs a reference for the import
graph.
Makes sense. It seems that if there are just type definitions
with enum constants the module is a "leaf module". As soon as I
add the delegate which calls writefln
```somemodule.d
struct File {
enum title = "File";
enum void function (string) foo = (a => writefln ("a <%s>",
a));
}
```
to the source the linker complains about the missing ModuleInfo.