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

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

private CheckInstanceMethodInvocationsWithinConstructor ( Constructor ctor ) : void
ctor Boo.Lang.Compiler.Ast.Constructor
Результат void
        void CheckInstanceMethodInvocationsWithinConstructor(Constructor ctor)
        {
            if (ctor.Body.IsEmpty)
                return;

            foreach (Statement st in ctor.Body.Statements)
            {
                ExpressionStatement est = st as ExpressionStatement;
                if (null == est) continue;

                MethodInvocationExpression mie = est.Expression as MethodInvocationExpression;
                if (null == mie) continue;

                if (mie.Target is SelfLiteralExpression
                    || mie.Target is SuperLiteralExpression)
                    break;//okay we're done checking

                if (mie.Target is MemberReferenceExpression)
                {
                    MemberReferenceExpression mre = (MemberReferenceExpression) mie.Target;
                    if (mre.Target is SelfLiteralExpression
                        || mre.Target is SuperLiteralExpression)
                    {
                        Error(CompilerErrorFactory.InstanceMethodInvocationBeforeInitialization(ctor, mre));
                    }
                }
            }
        }
ProcessMethodBodies