public override void VisitFunctionTypeToken(FunctionTypeToken functionTypeToken)
            {
                if (functionTypeToken.ReturnTypeToken.Kind != SyntaxKind.VoidKeyword)
                {
                    Writer.Write("Func<");
                }
                else
                {
                    Writer.Write("Action<");
                }

                var parameters = functionTypeToken.Parameters.ToList();

                for (var i = 0; i < parameters.Count; i++)
                {
                    switch (parameters[i])
                    {
                    case Parameter parameter:
                        Visit(parameter.TypeToken);
                        break;

                    default:
                        throw new InvalidOperationException("Unsupported function parameter kind: " + parameters[i].Kind.ToString());
                    }

                    if (i + 1 < parameters.Count)
                    {
                        Writer.Write(", ");
                    }
                }

                if (functionTypeToken.ReturnTypeToken.Kind != SyntaxKind.VoidKeyword)
                {
                    if (parameters.Count > 0)
                    {
                        Writer.Write(", ");
                    }

                    Visit(functionTypeToken.ReturnTypeToken);
                }

                Writer.Write(">");
            }
Example #2
0
 public virtual void VisitFunctionTypeToken(FunctionTypeToken functionTypeToken)
 {
 }