static ExpressionSyntax BuildArgumentList(RoslynTranslator translator, IFunctionCallModel call, out List <ArgumentSyntax> argumentList)
        {
            ExpressionSyntax instance = null;

            if (call is IHasInstancePort modelWithInstancePort && modelWithInstancePort.InstancePort != null)
            {
                instance = (ExpressionSyntax)translator.BuildPort(modelWithInstancePort.InstancePort).SingleOrDefault();
            }

            argumentList = new List <ArgumentSyntax>();
            foreach (IPortModel port in call.GetParameterPorts())
            {
                var syntaxNode = translator.BuildPort(port).SingleOrDefault();
                if (syntaxNode != null)
                {
                    var argumentNode = syntaxNode as ArgumentSyntax ?? SyntaxFactory.Argument(syntaxNode as ExpressionSyntax);
                    argumentList.Add(argumentNode);
                }
            }

            return(instance);
        }
Example #2
0
 public static IEnumerable <IPortModel> GetParameterPorts(this IFunctionCallModel functionCallModel)
 {
     return(functionCallModel.ParametersNames.Select(functionCallModel.GetPortForParameter));
 }