digitalmars.D.bugs - [Issue 20002] New: Cannot access derived protected method in another
- d-bugmail puremagic.com (47/47) Jun 24 2019 https://issues.dlang.org/show_bug.cgi?id=20002
https://issues.dlang.org/show_bug.cgi?id=20002 Issue ID: 20002 Summary: Cannot access derived protected method in another module Product: D Version: D2 Hardware: All OS: All Status: NEW Severity: normal Priority: P1 Component: dmd Assignee: nobody puremagic.com Reporter: andrej.mitrovich gmail.com This is similar to https://issues.dlang.org/show_bug.cgi?id=2417. Test-case: base.d: ``` import derived; class Base { protected void func() { } } void main() { auto derived = new Derived; derived.func(); } ``` derived.d: ``` import base; class Derived : Base { protected override void func() { } } ``` ~/dev/d master * $ dmd -run base.d base.d(11): Deprecation: derived.Derived.func is not visible from module base base.d(11): Error: class `derived.Derived` member func is not accessible The fix is to change: auto derived = new Derived; to: Base derived = new Derived; But I don't see why the compiler can't access it in the first case, it's still a virtual call after all.. --
Jun 24 2019