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

AddResolvedNamedArgumentToEval() защищенный Метод

protected AddResolvedNamedArgumentToEval ( MethodInvocationExpression eval, Boo.Lang.Compiler.Ast.ExpressionPair pair, ReferenceExpression instance ) : void
eval Boo.Lang.Compiler.Ast.MethodInvocationExpression
pair Boo.Lang.Compiler.Ast.ExpressionPair
instance Boo.Lang.Compiler.Ast.ReferenceExpression
Результат void
        protected virtual void AddResolvedNamedArgumentToEval(MethodInvocationExpression eval, ExpressionPair pair, ReferenceExpression instance)
        {
            IEntity entity = GetEntity(pair.First);
            switch (entity.EntityType)
            {
                case EntityType.Event:
                    {
                        IEvent member = (IEvent)entity;
                        eval.Arguments.Add(
                            CodeBuilder.CreateMethodInvocation(
                                pair.First.LexicalInfo,
                                instance.CloneNode(),
                                member.GetAddMethod(),
                                pair.Second));
                        break;
                    }

                case EntityType.Field:
                    {
                        eval.Arguments.Add(
                            CodeBuilder.CreateAssignment(
                                pair.First.LexicalInfo,
                                CodeBuilder.CreateMemberReference(
                                    instance.CloneNode(),
                                    (IMember)entity),
                                pair.Second));
                        break;
                    }

                case EntityType.Property:
                    {
                        IProperty property = (IProperty)entity;
                        IMethod setter = property.GetSetMethod();
                        if (null == setter)
                        {
                            Error(CompilerErrorFactory.PropertyIsReadOnly(pair.First, property));
                        }
                        else
                        {
                            //EnsureRelatedNodeWasVisited(pair.First, setter);
                            eval.Arguments.Add(
                                CodeBuilder.CreateAssignment(
                                    pair.First.LexicalInfo,
                                    CodeBuilder.CreateMemberReference(
                                        instance.CloneNode(),
                                        property),
                                    pair.Second));
                        }
                        break;
                    }
            }
        }
ProcessMethodBodies