public override void PrepareEmit ()
{
- if (!Parameters.IsEmpty) {
- parameters.ResolveDefaultValues (this);
- }
+ if ((caching_flags & Flags.CloseTypeCreated) != 0)
+ return;
InvokeBuilder.PrepareEmit ();
if (BeginInvokeBuilder != null) {
var invoke = Delegate.GetInvokeMethod (target_type);
Arguments arguments = CreateDelegateMethodArguments (ec, invoke.Parameters, invoke.Parameters.Types, mg.Location);
- return mg.OverloadResolve (ec, ref arguments, null, OverloadResolver.Restrictions.CovariantDelegate | OverloadResolver.Restrictions.ProbingOnly) != null;
+ mg = mg.OverloadResolve (ec, ref arguments, null, OverloadResolver.Restrictions.CovariantDelegate | OverloadResolver.Restrictions.ProbingOnly);
+ return mg != null && Delegate.IsTypeCovariant (ec, mg.BestCandidateReturnType, invoke.ReturnType);
}
#region IErrorHandler Members