Boo.Lang.Compiler.Steps.ProcessAssignmentsToSpecialMembers.WalkMemberChain C# (CSharp) Метод

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

protected WalkMemberChain ( Boo.Lang.Compiler.Ast.MemberReferenceExpression memberRef ) : List
memberRef Boo.Lang.Compiler.Ast.MemberReferenceExpression
Результат List
        protected virtual List WalkMemberChain(MemberReferenceExpression memberRef)
        {
            List chain = new List();
            while (true)
            {
                MemberReferenceExpression container = memberRef.Target as MemberReferenceExpression;
                if (null == container ||
                    (IsSpecialMemberTarget(container)
                    && IsReadOnlyMember(container)))
                {
                    Warnings.Add(
                        CompilerWarningFactory.AssignmentToTemporary(memberRef));
                    return null;
                }
                if (IsSpecialMemberTarget(container)
                    && EntityType.Field != container.Entity.EntityType)
                {
                    chain.Insert(0, new ChainItem(container));
                }
                if (IsTerminalReferenceNode(container.Target))
                {
                    break;
                }
                memberRef = container;
            }
            return chain;
        }