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));
}
}
}
}