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); }
public static IEnumerable <IPortModel> GetParameterPorts(this IFunctionCallModel functionCallModel) { return(functionCallModel.ParametersNames.Select(functionCallModel.GetPortForParameter)); }