Why can we not use __traits across protection?
Alex
AJ at gmail.com
Tue Apr 2 14:56:38 UTC 2019
Module X:
class x
{
private int x;
}
Module Y:
import X;
moduleName!(x.x);
or
__traits(getProtection, x.x);
Deprecation: `X.x.x.x` is not visible from module `Y`
Error: class `X.x.x` member `x` is not accessible
My use case is a little more complicated but I have two issues.
1: I have to import the module even though the type passed is
valid(I'm using templates which are passed the type with a module
import and I'd expect the module import to be "passed" along with
the type so that I don't have to import it to use __traits or
reflection.
2. If a member is protected then __traits and others fails. This
makes absolutely no sense. Protection is used for run time, not
compile time. What is strange is private methods give a
deprecation warning but private fields give a deprecation error.
More information about the Digitalmars-d
mailing list