Exemple #1
0
 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)));
        }
Exemple #3
0
 public virtual VisitorEnterResult Visit(StructInitSyntaxNode node) => DefaultVisitEnter(node);
Exemple #4
0
 public string Visit(StructInitSyntaxNode node)
 => $"{{ {string.Join("; ", node.Fields.Select(f => $"{f.Name}={f.Node.Accept(this)}"))}}}";
Exemple #5
0
 public virtual bool Visit(StructInitSyntaxNode node) => true;