unittest {
import std.complex : complex;
static assert(!__traits(compiles, { alias a = std.complex.abs; }));
}
unittest {
import std.complex : complex;
import std.internal.test.uda; // module with no imports
static assert(__traits(compiles, { alias a = std.complex.abs; }));
}
In the first block above, we can't refer to std.complex.abs, as it's not imported by the selective import statement. In the second block however, the presence of a second, non-selective, import statement makes std.complex.abs accessible again.
Note that the module selected has no imports, and it's thus not a case of referring to imports in that imported module.
Note also that the name of the second module is important - it needs to be in the same package as the first imported module. I tested with a module called `bar`, and the static assert correctly triggered, but renaming the module to std.bar (still an empty file) made it compile again.
Comment #1 by robert.schadek — 2024-12-13T19:05:39Z