public override void VisitIndexerExpression (IndexerExpression indexerExpression) { base.VisitIndexerExpression (indexerExpression); var tr = GetTypeRef (indexerExpression.Target); if (tr != null && (tr.IsArray || tr.FullName == "System.String")) return; var t = indexerExpression.Target; var pa = indexerExpression.Parent as AssignmentExpression; if (pa != null && pa.Left == indexerExpression) { var s = new InvocationExpression ( new MemberReferenceExpression (t.Clone(), "set_Item"), indexerExpression.Arguments.Concat (new[]{pa.Right.Clone()}).Select (x => x.Clone ())); pa.ReplaceWith (s); } else { var s = new InvocationExpression ( new MemberReferenceExpression (t.Clone(), "get_Item"), indexerExpression.Arguments.Select (x => x.Clone ())); indexerExpression.ReplaceWith (s); } Changed = true; }
public override void VisitIndexerExpression (IndexerExpression indexerExpression) { base.VisitIndexerExpression (indexerExpression); var t = GetTypeRef (indexerExpression.Target); if (t != null && t.FullName == "System.String") { var targ = indexerExpression.Target; targ.Remove (); var index = indexerExpression.Arguments.FirstOrNullObject (); index.Remove (); var i = new InvocationExpression ( new MemberReferenceExpression (targ, "charCodeAt"), index); indexerExpression.ReplaceWith (i); } }