public bool Visit(StructInitSyntaxNode node) { if (!VisitChildren(node)) { return(false); } _ticTypeGraph.SetStructInit( node.Fields.Select(f => f.Name).ToArray(), node.Fields.Select(f => f.Node.OrderNumber).ToArray(), node.OrderNumber); return(true); }
public IExpressionNode Visit(StructInitSyntaxNode node) { var types = new Dictionary <string, FunnyType>(node.Fields.Count); var names = new string[node.Fields.Count]; var nodes = new IExpressionNode[node.Fields.Count]; for (int i = 0; i < node.Fields.Count; i++) { var field = node.Fields[i]; nodes[i] = ReadNode(field.Node); names[i] = field.Name; types.Add(field.Name, field.Node.OutputType); } foreach (var field in node.OutputType.StructTypeSpecification) { if (!types.ContainsKey(field.Key)) { throw FunParseException.ErrorStubToDo($"Field {field.Key} is missed in struct"); } } return(new StructInitExpressionNode(names, nodes, node.Interval, FunnyType.StructOf(types))); }
public virtual VisitorEnterResult Visit(StructInitSyntaxNode node) => DefaultVisitEnter(node);
public string Visit(StructInitSyntaxNode node) => $"{{ {string.Join("; ", node.Fields.Select(f => $"{f.Name}={f.Node.Accept(this)}"))}}}";
public virtual bool Visit(StructInitSyntaxNode node) => true;