protected override bool CheckOverrideAgainstBase(MemberSpec base_member)
{
var ok = base.CheckOverrideAgainstBase (base_member);
//
// Check base property accessors conflict
//
var base_prop = (PropertySpec) base_member;
if (Get != null) {
if (!base_prop.HasGet) {
if (ok) {
Report.SymbolRelatedToPreviousError (base_prop);
Report.Error (545, Get.Location,
"`{0}': cannot override because `{1}' does not have an overridable get accessor",
Get.GetSignatureForError (), base_prop.GetSignatureForError ());
ok = false;
}
} else if (Get.HasCustomAccessModifier || base_prop.HasDifferentAccessibility) {
if (!CheckAccessModifiers (Get, base_prop.Get)) {
Error_CannotChangeAccessModifiers (Get, base_prop.Get);
ok = false;
}
}
}
if (Set != null) {
if (!base_prop.HasSet) {
if (ok) {
Report.SymbolRelatedToPreviousError (base_prop);
Report.Error (546, Set.Location,
"`{0}': cannot override because `{1}' does not have an overridable set accessor",
Set.GetSignatureForError (), base_prop.GetSignatureForError ());
ok = false;
}
} else if (Set.HasCustomAccessModifier || base_prop.HasDifferentAccessibility) {
if (!CheckAccessModifiers (Set, base_prop.Set)) {
Error_CannotChangeAccessModifiers (Set, base_prop.Set);
ok = false;
}
}
}
if ((Set == null || !Set.HasCustomAccessModifier) && (Get == null || !Get.HasCustomAccessModifier)) {
if (!CheckAccessModifiers (this, base_prop)) {
Error_CannotChangeAccessModifiers (this, base_prop);
ok = false;
}
}
return ok;
}