Boo.Lang.Compiler.Steps.ExpandProperties.LeaveMemberReferenceExpression C# (CSharp) Метод

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

public LeaveMemberReferenceExpression ( Boo.Lang.Compiler.Ast.MemberReferenceExpression node ) : void
node Boo.Lang.Compiler.Ast.MemberReferenceExpression
Результат void
        public override void LeaveMemberReferenceExpression(MemberReferenceExpression node)
        {
            if (null == node.Entity) return;
            if (EntityType.Property != node.Entity.EntityType) return;
            if (AstUtil.IsLhsOfAssignment(node)) return;

            IProperty property = (IProperty)node.Entity;
            MethodInvocationExpression getter = CodeBuilder.CreatePropertyGet(node.Target, property);

            // preserve duck typing...
            if (property.IsDuckTyped)
            {
                ReplaceCurrentNode(
                    CodeBuilder.CreateCast(
                        TypeSystemServices.DuckType, getter));
            }
            else
            {
                ReplaceCurrentNode(getter);
            }
        }