public override void PrepareEmit ()
{
- if (!Parameters.IsEmpty) {
- parameters.ResolveDefaultValues (this);
- }
+ if ((caching_flags & Flags.CloseTypeCreated) != 0)
+ return;
InvokeBuilder.PrepareEmit ();
if (BeginInvokeBuilder != null) {
ec.CloseConditionalAccess (null);
}
- public override void FlowAnalysis (FlowAnalysisContext fc) {
+ public override void FlowAnalysis (FlowAnalysisContext fc)
+ {
base.FlowAnalysis (fc);
method_group.FlowAnalysis (fc);
+
+ if (conditional_access_receiver)
+ fc.ConditionalAccessEnd ();
}
void Error_ConversionFailed (ResolveContext ec, MethodSpec method, Expression return_type)
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