void Error_ConversionFailed(ResolveContext ec, MethodSpec method, Expression return_type)
{
var invoke_method = Delegate.GetInvokeMethod(type);
string member_name = method_group.InstanceExpression != null?
Delegate.FullDelegateDesc(method) :
TypeManager.GetFullNameSignature(method);
ec.Report.SymbolRelatedToPreviousError(type);
ec.Report.SymbolRelatedToPreviousError(method);
if (ec.Module.Compiler.Settings.Version == LanguageVersion.ISO_1)
{
ec.Report.Error(410, loc, "A method or delegate `{0} {1}' parameters and return type must be same as delegate `{2} {3}' parameters and return type",
method.ReturnType.GetSignatureForError(), member_name,
invoke_method.ReturnType.GetSignatureForError(), Delegate.FullDelegateDesc(invoke_method));
return;
}
if (return_type == null)
{
ec.Report.Error(123, loc, "A method or delegate `{0}' parameters do not match delegate `{1}' parameters",
member_name, Delegate.FullDelegateDesc(invoke_method));
return;
}
ec.Report.Error(407, loc, "A method or delegate `{0} {1}' return type does not match delegate `{2} {3}' return type",
return_type.GetSignatureForError(), member_name,
invoke_method.ReturnType.GetSignatureForError(), Delegate.FullDelegateDesc(invoke_method));
}