public IExpressionNode Visit(ArraySyntaxNode node) { var elements = new IExpressionNode[node.Expressions.Count]; var expectedElementType = node.OutputType.ArrayTypeSpecification.FunnyType; for (int i = 0; i < node.Expressions.Count; i++) { var elementNode = ReadNode(node.Expressions[i]); elements[i] = CastExpressionNode.GetConvertedOrOriginOrThrow(elementNode, expectedElementType); } return(new ArrayExpressionNode(elements, node.Interval, node.OutputType)); }
public bool Visit(ArraySyntaxNode node) { VisitChildren(node); var elementIds = new int[node.Expressions.Count]; for (int i = 0; i < node.Expressions.Count; i++) { elementIds[i] = node.Expressions[i].OrderNumber; } #if DEBUG Trace(node, $"[{string.Join(",", elementIds)}]"); #endif _ticTypeGraph.SetSoftArrayInit(node.OrderNumber, elementIds); return(true); }
public override bool Visit(ArraySyntaxNode node) { // if upcast is denied // This code is active because composite upcast works not very well... var elementType = node.OutputType.ArrayTypeSpecification.FunnyType; if (elementType == FunnyType.Anything) { return(true); } if (node.Children.All(i => i.OutputType == elementType)) { return(true); } throw ErrorFactory.VariousArrayElementTypes(node); }
public virtual VisitorEnterResult Visit(ArraySyntaxNode node) => DefaultVisitEnter(node);
public string Visit(ArraySyntaxNode node) => "[...]";
public virtual bool Visit(ArraySyntaxNode node) => true;