[Issue 18079] New: rdmd does not discover all dependencies
d-bugmail at puremagic.com
d-bugmail at puremagic.com
Thu Dec 14 16:25:16 UTC 2017
https://issues.dlang.org/show_bug.cgi?id=18079
Issue ID: 18079
Summary: rdmd does not discover all dependencies
Product: D
Version: D2
Hardware: All
OS: All
Status: NEW
Severity: normal
Priority: P1
Component: tools
Assignee: nobody at puremagic.com
Reporter: johnnymarler at gmail.com
Related to (https://issues.dlang.org/show_bug.cgi?id=8858). That bug was
created because dmd would not discover all the imported modules when compiling
a single file. However, this was closed as a "non issue" because the compiler
is not "supposed" to discover all dependencies when compiling a single module.
If an application wants to discover all imported modules, then they can use the
"-deps" flag to force the compiler to do so.
rdmd currently uses this "import discovery" to obtain a list of all the modules
it needs to compile. However, rdmd does not use the "-deps" flag when
discovering dependencies which means that in some cases it will be missing
modules to compile, i.e.
main.d
```
import foo;
void main() { printx(); }
```
foo.d
```
module foo;
void printx() { import std.stdio; import bar : x; writefln("x is %s", x); }
```
bar.d
```
module bar;
int x = 42;
```
> rdmd main.d
this could be fixed by modifying rdmd to use the "-deps" flag, however, this
has a significant performance cost. Another solution proposed is to integrate
the "compile imports" feature (https://github.com/dlang/dmd/pull/7099) and
modify rdmd to use that feature instead
(https://github.com/dlang/tools/pull/271).
--
More information about the Digitalmars-d-bugs
mailing list