protected override bool CheckBase () { if (!base.CheckBase ()) return false; MemberSpec candidate; bool overrides = false; var conflict_symbol = MemberCache.FindBaseMember (this, out candidate, ref overrides); if (conflict_symbol == null) conflict_symbol = candidate; if (conflict_symbol == null) { if ((ModFlags & Modifiers.NEW) != 0) { Report.Warning (109, 4, Location, "The member `{0}' does not hide an inherited member. The new keyword is not required", GetSignatureForError ()); } } else { if ((ModFlags & (Modifiers.NEW | Modifiers.OVERRIDE | Modifiers.BACKING_FIELD)) == 0) { Report.SymbolRelatedToPreviousError (conflict_symbol); Report.Warning (108, 2, Location, "`{0}' hides inherited member `{1}'. Use the new keyword if hiding was intended", GetSignatureForError (), conflict_symbol.GetSignatureForError ()); } if (conflict_symbol.IsAbstract) { Report.SymbolRelatedToPreviousError (conflict_symbol); Report.Error (533, Location, "`{0}' hides inherited abstract member `{1}'", GetSignatureForError (), conflict_symbol.GetSignatureForError ()); } } return true; }