public override void VisitDefineFunctionNode(DefineFunctionNode node) { TypeSyntax returnType = node.ReturnType.ID.Text == "void" ? PredefinedType(Token(SyntaxKind.VoidKeyword)) : ParseTypeName(node.ReturnType.ID.Text); returnType = GetNodeWithAnnotation(returnType, node.ReturnType.Location) as TypeSyntax; var defineFunction = MethodDeclaration(returnType, node.ID.Text) .AddModifiers(Token(SyntaxKind.StaticKeyword)); node.Arguments.ForEach(arg => defineFunction = defineFunction.AddParameterListParameters( Parameter(GetNodeWithAnnotation(Identifier(arg.Name.Text), arg.Name.Location)) .WithType(GetNodeWithAnnotation(ParseTypeName(arg.Type.ID.Text), arg.Type.Location) as TypeSyntax) )); if (node.Body.Statements.Count == 0) //if empty function { defineFunction = defineFunction.WithBody(Block()); } else { blocks.Push(defineFunction); node.Body.Statements.ForEach(statement => statement.Visit(this)); defineFunction = blocks.Pop() as MethodDeclarationSyntax; } defineFunction = defineFunction.AddModifiers(Token(SyntaxKind.PublicKeyword)); defineFunction = GetNodeWithAnnotation(defineFunction, node.Location) as MethodDeclarationSyntax; programClassNode = programClassNode.AddMembers(defineFunction); }
public virtual void VisitDefineFunctionNode(DefineFunctionNode node) { }