Bug 20002 – Cannot access derived protected method in another module

Status
NEW
Severity
normal
Priority
P3
Component
dmd
Product
D
Version
D2
Platform
All
OS
All
Creation time
2019-06-25T06:44:16Z
Last change time
2024-12-13T19:04:20Z
Assigned to
No Owner
Creator
Andrej Mitrovic
Moved to GitHub: dmd#19594 →

Comments

Comment #0 by andrej.mitrovich — 2019-06-25T06:44:16Z
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..
Comment #1 by robert.schadek — 2024-12-13T19:04:20Z
THIS ISSUE HAS BEEN MOVED TO GITHUB https://github.com/dlang/dmd/issues/19594 DO NOT COMMENT HERE ANYMORE, NOBODY WILL SEE IT, THIS ISSUE HAS BEEN MOVED TO GITHUB