Boo.Lang.Compiler.Steps.ProcessMethodBodies.BindAssignmentToComplexSliceArray C# (CSharp) Метод

BindAssignmentToComplexSliceArray() приватный Метод

private BindAssignmentToComplexSliceArray ( Boo.Lang.Compiler.Ast.BinaryExpression node ) : void
node Boo.Lang.Compiler.Ast.BinaryExpression
Результат void
        void BindAssignmentToComplexSliceArray(BinaryExpression node)
        {
            var slice = (SlicingExpression)node.Left;
            var ale = new ArrayLiteralExpression();
            var collapse = new ArrayLiteralExpression();
            var compute_end = new ArrayLiteralExpression();
            for (int i = 0; i < slice.Indices.Count; i++)
            {
                ale.Items.Add(slice.Indices[i].Begin);
                if (slice.Indices[i].End == null)
                {
                    ale.Items.Add(new IntegerLiteralExpression(1 + (int)((IntegerLiteralExpression)slice.Indices[i].Begin).Value));
                    collapse.Items.Add(new BoolLiteralExpression(true));
                    compute_end.Items.Add(new BoolLiteralExpression(false));
                }
                else if (slice.Indices[i].End == OmittedExpression.Default)
                {
                    ale.Items.Add(new IntegerLiteralExpression(0));
                    collapse.Items.Add(new BoolLiteralExpression(false));
                    compute_end.Items.Add(new BoolLiteralExpression(true));
                }
                else
                {
                    ale.Items.Add(slice.Indices[i].End);
                    collapse.Items.Add(new BoolLiteralExpression(false));
                    compute_end.Items.Add(new BoolLiteralExpression(false));
                }
            }

            var mie = CodeBuilder.CreateMethodInvocation(
                MethodCache.RuntimeServices_SetMultiDimensionalRange1,
                node.Right,
                slice.Target,
                ale);

            mie.Arguments.Add(compute_end);
            mie.Arguments.Add(collapse);

            BindExpressionType(mie, TypeSystemServices.VoidType);
            BindExpressionType(ale, TypeSystemServices.Map(typeof(int[])));
            BindExpressionType(compute_end, TypeSystemServices.Map(typeof(bool[])));
            BindExpressionType(collapse, TypeSystemServices.Map(typeof(bool[])));

            node.ParentNode.Replace(node, mie);
        }
ProcessMethodBodies