protected virtual void CheckAbstractExtern(ResolveContext rc) { if (Parent.Kind == TypeKind.Interface) { return; } if (this is MethodCore && (this as MethodCore).HasBody) { if ((mod_flags & Modifiers.EXTERN) != 0) { rc.Report.Error(202, Location, "`{0}' cannot declare a body because it is marked extern", GetSignatureForError()); } if ((mod_flags & Modifiers.ABSTRACT) != 0) { rc.Report.Error(203, Location, "`{0}' cannot declare a body because it is marked abstract", GetSignatureForError()); } } else { if ((mod_flags & (Modifiers.ABSTRACT | Modifiers.EXTERN | Modifiers.PARTIAL)) == 0 && !(Parent is DelegateDeclaration)) { PropertyMethod pm = this as PropertyMethod; if (pm is IndexerGetterDeclaration || pm is IndexerSetterDeclaration) { pm = null; } if (pm != null && pm.Property.AccessorSecond == null) { rc.Report.Error(204, Location, "`{0}' must have a body because it is not marked abstract or extern. The property can be automatically implemented when you define both accessors", GetSignatureForError()); } rc.Report.Error(205, Location, "`{0}' must have a body because it is not marked abstract, extern, or partial", GetSignatureForError()); } } }
// TODO:IMPL protected void CheckAccessorNameConflict(PropertyMethod m) { }