Mono.CSharp.PropertyBase.CheckOverrideAgainstBase C# (CSharp) Method

CheckOverrideAgainstBase() protected method

protected CheckOverrideAgainstBase ( MemberSpec base_member ) : bool
base_member MemberSpec
return bool
        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;
        }