////////// a.d ////////// class A { protected void f() {} } ////////// b.d ////////// import a; class B : A { override void f() { super.f(); } } ///////////////////////// DMD now complains: b.d(7): Deprecation: a.A.f is not visible from module b Of course this makes no sense - you can override a symbol but not call it? Introduced in https://github.com/D-Programming-Language/dmd/pull/5472
OK, I missed that DotIdExp on super also needs to allow protected access just like looking in base classes.
https://trello.com/c/jGUb9iDk/164-issue-15785-spurious-warning-when-calling-protected-super https://github.com/D-Programming-Language/dmd/pull/5530
Commits pushed to master at https://github.com/D-Programming-Language/dmd https://github.com/D-Programming-Language/dmd/commit/f8ab4598e6059fa41db025b2881c540510957eb3 fix Issue 15785 - spurious warning when calling protected super - allow access to protected symbols accessible through base class - need to check visibility for qualified lookups from the current scope https://github.com/D-Programming-Language/dmd/commit/a0514fb8f84aa98d6117633b8c8293c545737a40 Merge pull request #5530 from MartinNowak/fix15785 fix Issue 15785 - spurious warning when calling protected super