private async Task DispatchCallMessageForDelegateCallAsync(DelegateCallInfo delegateCallInfo, PropagationKind propKind) { var tasks = new List <Task>(); foreach (var callee in delegateCallInfo.PossibleCallees) { var task = this.CreateAndSendCallMessageAsync(delegateCallInfo, callee, propKind); tasks.Add(task); } await Task.WhenAll(tasks); }
public void RegisterStaticDelegateCall(MethodDescriptor callee, IList <PropGraphNodeDescriptor> arguments, VariableNode lhs, DelegateVariableNode delegateNode, AnalysisCallNode callNode) { Contract.Requires(delegateNode != null); Contract.Requires(arguments != null); Contract.Requires(callee != null); var callExp = new DelegateCallInfo(this.Method, callNode, delegateNode, arguments, lhs); // RegisterInvocation(arguments, delegateNode, callExp); RegisterInvocation(arguments, callNode, callExp); }
internal async Task <ISet <MethodDescriptor> > ComputeCalleesForDelegateNodeAsync(DelegateCallInfo callInfo, IProjectCodeProvider codeProvider) { return(await GetDelegateCalleesAsync(callInfo.Delegate, codeProvider)); }
internal ISet <MethodDescriptor> ComputeCalleesForDelegateNode(DelegateCallInfo callInfo, IProjectCodeProvider codeProvider) { return(GetDelegateCallees(callInfo.Delegate, codeProvider)); }
private async Task DispatchCallMessageForDelegateAsync(DelegateCallInfo delegateCallInfo, PropagationKind propKind) { var continuations = new List<Task>(); foreach (var callee in await GetDelegateCalleesAsync(delegateCallInfo.CalleeDelegate)) { var continuation = CreateAndSendCallMessageAsync(delegateCallInfo, callee, callee.ContainerType, propKind); await continuation; //continuations.Add(continuation); } await Task.WhenAll(continuations); }
public void RegisterStaticDelegateCall(MethodDescriptor callee, IList<PropGraphNodeDescriptor> arguments, VariableNode lhs, DelegateVariableNode delegateNode, AnalysisCallNode callNode) { Contract.Requires(delegateNode != null); Contract.Requires(arguments != null); Contract.Requires(callee != null); var callExp = new DelegateCallInfo(this.Method, callNode, delegateNode, arguments, lhs); // RegisterInvocation(arguments, delegateNode, callExp); RegisterInvocation(arguments, callNode, callExp); }
private void DispatchCallMessageForDelegate(DelegateCallInfo delegateCallInfo, PropagationKind propKind) { foreach (var callee in GetDelegateCallees(delegateCallInfo.CalleeDelegate)) { CreateAndSendCallMessage(delegateCallInfo, callee, callee.ContainerType, propKind); } }