Bug 10267 – Access checks should be relaxed in some contexts

Status
RESOLVED
Resolution
WORKSFORME
Severity
normal
Priority
P2
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2013-06-04T08:57:03Z
Last change time
2021-05-11T09:06:28Z
Assigned to
No Owner
Creator
Andrej Mitrovic
Blocks
10258

Comments

Comment #0 by andrej.mitrovich — 2013-06-04T08:57:03Z
Currently we can't filter out function overloads which are non-accessible. As soon as one of a functions overloads is inaccessible the getOverloads trait will fail, essentially making the getProtection trait also unusable. For example: foo.d: ----- module foo; struct S { private void x(int) { } // private overload public void x(float) { } // public overload } ----- ----- module test; import foo; void main() { foreach (member; __traits(allMembers, S)) { // Error: struct foo.S member x is not accessible foreach (overload; __traits(getOverloads, S, member)) { // too late, already errored out static if (__traits(getProtection, overload) == "public") { // ... do something if accessible } } } } ----- Some comments: https://github.com/D-Programming-Language/phobos/pull/1331#issuecomment-18915427 https://github.com/D-Programming-Language/phobos/pull/1331#issuecomment-18918513
Comment #1 by razvan.nitu1305 — 2021-05-11T09:06:28Z
This compiles in todays compiler. Closing as w4m.