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

LeaveSlicingExpression() публичный Метод

public LeaveSlicingExpression ( Boo.Lang.Compiler.Ast.SlicingExpression node ) : void
node Boo.Lang.Compiler.Ast.SlicingExpression
Результат void
        public override void LeaveSlicingExpression(SlicingExpression node)
        {
            if (node.Target.Entity.IsAmbiguous())
            {
                BindIndexedPropertySlicing(node);
                return;
            }

            // target[indices]
            var targetType = GetExpressionType(node.Target);
            if (IsError(targetType))
            {
                Error(node);
                return;
            }

            if (node.IsComplexSlicing())
            {
                BindExpressionType(node, ResultingTypeForComplexSlicing(node));
                return;
            }

            if (IsIndexedProperty(node.Target))
            {
                BindIndexedPropertySlicing(node);
                return;
            }

            if (targetType.IsArray)
            {
                BindExpressionType(node, targetType.ElementType);
                return;
            }

            var member = TypeSystemServices.GetDefaultMember(targetType);
            if (member == null)
            {
                Error(node, CompilerErrorFactory.TypeDoesNotSupportSlicing(node.Target, targetType));
                return;
            }

            node.Target = new MemberReferenceExpression(node.LexicalInfo, node.Target, member.Name)
            {
                Entity = member,
                ExpressionType = Null.Default // to be resolved later
            };
            SliceMember(node, member);
        }
ProcessMethodBodies