Thread overview
[Issue 9546] New: getProtection trait does not work with mixin or getMember
Feb 20, 2013
Andrej Mitrovic
Feb 20, 2013
Andrej Mitrovic
Jul 19, 2013
Kenji Hara
Jul 21, 2013
Walter Bright
February 20, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9546

           Summary: getProtection trait does not work with mixin or
                    getMember
           Product: D
           Version: D2
          Platform: All
        OS/Version: All
            Status: NEW
          Keywords: rejects-valid
          Severity: normal
          Priority: P2
         Component: DMD
        AssignedTo: nobody@puremagic.com
        ReportedBy: andrej.mitrovich@gmail.com


--- Comment #0 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-02-19 20:37:50 PST ---
/imorts/a.d:
---------------------------
module imports.a;

class S
{
    private int privA;
    protected int protA;
    package int packA;
}
---------------------------


/test.d:
---------------------------
import imports.a;

void main()
{
    S s;
    static assert(__traits(getProtection, s.privA) == "private");
    static assert(__traits(getProtection, s.protA) == "protected");
    static assert(__traits(getProtection, s.packA) == "package");

    /** NG - symbols not accessible */
    static assert(__traits(getProtection, mixin("s.privA")) == "private");
    static assert(__traits(getProtection, mixin("s.protA")) == "protected");
    static assert(__traits(getProtection, mixin("s.packA")) == "package");

    /** NG - symbols not accessible */
    static assert(__traits(getProtection,
                  __traits(getMember, s, "privA")) == "private");
    static assert(__traits(getProtection,
                  __traits(getMember, s, "protA")) == "protected");
    static assert(__traits(getProtection,
                  __traits(getMember, s, "packA")) == "package");
}
---------------------------

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
February 20, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9546



--- Comment #1 from Andrej Mitrovic <andrej.mitrovich@gmail.com> 2013-02-19 21:12:30 PST ---
An almost working workaround is to use T.init.tupleof[index] to get a member without triggering access protection errors, however this will not work with methods since they're not part of .tupleof() (only fields are).

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
July 19, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9546


Kenji Hara <k.hara.pg@gmail.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Keywords|                            |pull


--- Comment #2 from Kenji Hara <k.hara.pg@gmail.com> 2013-07-19 01:09:14 PDT ---
https://github.com/D-Programming-Language/dmd/pull/2361

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
July 21, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9546



--- Comment #3 from github-bugzilla@puremagic.com 2013-07-21 13:15:50 PDT ---
Commits pushed to master at https://github.com/D-Programming-Language/dmd

https://github.com/D-Programming-Language/dmd/commit/ad28224b3c5240f466c8e3b384a55b07742a4a90 fix Issue 9546 - getProtection trait does not work with mixin or getMember

Stop access check during `__traits(getProtection)` evaluated.

https://github.com/D-Programming-Language/dmd/commit/2ead3f00168ce9b99e1c845e631b3603bcccb905 Merge pull request #2361 from 9rnsr/fix9546

Issue 9546 - getProtection trait does not work with mixin or getMember

-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
July 21, 2013
http://d.puremagic.com/issues/show_bug.cgi?id=9546


Walter Bright <bugzilla@digitalmars.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
             Status|NEW                         |RESOLVED
                 CC|                            |bugzilla@digitalmars.com
         Resolution|                            |FIXED


-- 
Configure issuemail: http://d.puremagic.com/issues/userprefs.cgi?tab=email
------- You are receiving this mail because: -------