[Issue 22011] New: traits(getMember, Anything, "this") does not bypass visibility

d-bugmail at puremagic.com d-bugmail at puremagic.com
Thu Jun 10 02:09:12 UTC 2021


https://issues.dlang.org/show_bug.cgi?id=22011

          Issue ID: 22011
           Summary: traits(getMember, Anything, "this") does not bypass
                    visibility
           Product: D
           Version: D2
          Hardware: All
                OS: All
            Status: NEW
          Severity: normal
          Priority: P1
         Component: dmd
          Assignee: nobody at puremagic.com
          Reporter: destructionator at gmail.com

Consider the following:

---
module bugtrait;
class A {
        private this() {}
        private void foo() {}
}

---

module bugtrait2;
import bugtrait;
void main() {
        pragma(msg, __traits(getVisibility, __traits(getMember, A, "foo")));
        pragma(msg, __traits(getVisibility, __traits(getMember, A, "this")));
}

---

private
Error: no property `this` for type `bugtrait.A`


The "foo" works fine, it bypasses private when getting the member, allowing me
to inspect its visibility, deprecation status, etc.

But then for "this", it fails, even though traits(allMembers) returns it,
causing an annoying special case.

--


More information about the Digitalmars-d-bugs mailing list