void EmitNormalizedArrayIndex(SlicingExpression sourceNode, Expression index)
{
bool isNegative = false;
if (CanBeNegative(index, ref isNegative)
&& !_rawArrayIndexing
&& !AstAnnotations.IsRawIndexing(sourceNode))
{
if (isNegative)
{
Dup();
_il.Emit(OpCodes.Ldlen);
LoadIntExpression(index);
_il.Emit(OpCodes.Add);
}
else
{
Dup();
LoadIntExpression(index);
Call(RuntimeServices_NormalizeArrayIndex);
}
}
else
LoadIntExpression(index);
}