/// <summary> /// Performs checks for an explicit interface implementation. First it /// checks whether the `interface_type' is a base inteface implementation. /// Then it checks whether `name' exists in the interface type. /// </summary> public bool VerifyImplements (InterfaceMemberBase mb) { var ifaces = spec.Interfaces; if (ifaces != null) { foreach (TypeSpec t in ifaces){ if (t == mb.InterfaceType) return true; } } Report.SymbolRelatedToPreviousError (mb.InterfaceType); Report.Error (540, mb.Location, "`{0}': containing type does not implement interface `{1}'", mb.GetSignatureForError (), mb.InterfaceType.GetSignatureForError ()); return false; }
/// <summary> /// Performs checks for an explicit interface implementation. First it /// checks whether the `interface_type' is a base inteface implementation. /// Then it checks whether `name' exists in the interface type. /// </summary> public bool VerifyImplements (InterfaceMemberBase mb) { var ifaces = PartialContainer.Interfaces; if (ifaces != null) { foreach (TypeSpec t in ifaces){ if (t == mb.InterfaceType || t == null) return true; var expanded_base = t.Interfaces; if (expanded_base == null) continue; foreach (var bt in expanded_base) { if (bt == mb.InterfaceType) return true; } } } Report.SymbolRelatedToPreviousError (mb.InterfaceType); Report.Error (540, mb.Location, "`{0}': containing type does not implement interface `{1}'", mb.GetSignatureForError (), mb.InterfaceType.GetSignatureForError ()); return false; }
private void AddMemberToList (InterfaceMemberBase mc, List<MemberCore> alist) { if (ordered_explicit_member_list == null) { ordered_explicit_member_list = new List<MemberCore> (); ordered_member_list = new List<MemberCore> (); } if (mc.IsExplicitImpl) { if (Kind == MemberKind.Interface) { Report.Error (541, mc.Location, "`{0}': explicit interface declaration can only be declared in a class or struct", mc.GetSignatureForError ()); } ordered_explicit_member_list.Add (mc); alist.Insert (0, mc); } else { ordered_member_list.Add (mc); alist.Add (mc); } }
/// <summary> /// Performs checks for an explicit interface implementation. First it /// checks whether the `interface_type' is a base inteface implementation. /// Then it checks whether `name' exists in the interface type. /// </summary> public bool VerifyImplements (InterfaceMemberBase mb) { if (ifaces != null) { foreach (Type t in ifaces){ if (TypeManager.IsEqual (t, mb.InterfaceType)) return true; } } Report.SymbolRelatedToPreviousError (mb.InterfaceType); Report.Error (540, mb.Location, "`{0}': containing type does not implement interface `{1}'", mb.GetSignatureForError (), TypeManager.CSharpName (mb.InterfaceType)); return false; }