DMD reports an error when trying to call the protected method of a superclass from inside the body of a delegate. Code to repro: void layoutTransaction(void delegate() action) { action(); } class Control { protected void onTextChanged() {} } class Label : Control { protected override void onTextChanged() { layoutTransaction({ super.onTextChanged(); }); } } Output: class Control member onTextChanged is not accessible. I think protected methods should be allowed to be called in this way. Note that private methods do seem to be accessible.
Forgot crucial detail that the error appears when Label is defined in a separate module from Control.
Works now, probably since the removal of the access code a few releases ago.