Пример #1
0
				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;
				}
Пример #2
0
			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);
				}
			}