public void VisitNode(JSIndexerExpression idx) { Visit(idx.Target); Output.OpenBracket(); Visit(idx.Index); Output.CloseBracket(); }
public void VisitNode(JSIndexerExpression ie) { var indexType = ie.Index.GetActualType(TypeSystem); if ( !TypeUtil.IsIntegral(indexType) && IsEnumOrNullableEnum(indexType) ) { var cast = JSInvocationExpression.InvokeMethod( JS.valueOf(TypeSystem.Int32), ie.Index, null, true ); ie.ReplaceChild(ie.Index, cast); } VisitChildren(ie); }
public void VisitNode(JSIndexerExpression ie) { var indexType = ie.Index.GetExpectedType(TypeSystem); if ( !ILBlockTranslator.IsIntegral(indexType) && ILBlockTranslator.IsEnum(indexType) ) { var cast = JSInvocationExpression.InvokeMethod( new JSFakeMethod("valueOf", TypeSystem.Int32, indexType), ie.Index, null, true ); ie.ReplaceChild(ie.Index, cast); } VisitChildren(ie); }
public void VisitNode(JSIndexerExpression ie) { var indexType = ie.Index.GetActualType(TypeSystem); if ( !TypeUtil.IsIntegral(indexType) && IsEnumOrNullableEnum(indexType) ) { var cast = JSInvocationExpression.InvokeStatic( JS.Number(TypeSystem.Int32), new[] { ie.Index }, true ); ie.ReplaceChild(ie.Index, cast); } VisitChildren(ie); }
public void VisitNode(JSIndexerExpression ie) { var v = ExtractAffectedVariable(ie.Target); var enclosingBoe = GetEnclosingNodes <JSBinaryOperatorExpression>((boe) => boe.Operator is JSAssignmentOperator).FirstOrDefault(); if ( (v != null) && (enclosingBoe.Node != null) && (enclosingBoe.ChildName == "Left") ) { var parentNodeIndices = GetParentNodeIndices(); State.SideEffects.Add(new FunctionAnalysis1stPass.SideEffect( parentNodeIndices, StatementIndex, NodeIndex, v, "element modified" )); } else { ; } VisitChildren(ie); }
protected JSExpression Translate_Ldelem(ILExpression node, TypeReference elementType) { var expectedType = elementType ?? node.ExpectedType ?? node.InferredType; var target = TranslateNode(node.Arguments[0]); if (target.IsNull) return target; var indexer = TranslateNode(node.Arguments[1]); JSExpression result = new JSIndexerExpression( target, indexer, expectedType ); if (CopyOnReturn(expectedType)) result = JSReferenceExpression.New(result); return result; }