private Expression GenerateSetIndexExpression(IList <Expression> arguments, IEnumerable <Instruction> instructions)
 {
     if (arguments.get_Count() < 3)
     {
         throw new Exception("Invalid number of arguments for set index expression.");
     }
     V_0 = new DynamicIndexerExpression(arguments.get_Item(0), this.objectTypeRef, instructions);
     V_1 = 1;
     while (V_1 < arguments.get_Count() - 1)
     {
         V_0.get_Indices().Add(arguments.get_Item(V_1));
         V_1 = V_1 + 1;
     }
     return(new BinaryExpression(26, V_0, arguments.get_Item(arguments.get_Count() - 1), this.typeSystem, null, false));
 }
 private Expression GenerateGetIndexExpression(IList <Expression> arguments, IEnumerable <Instruction> instructions)
 {
     if (arguments.get_Count() < 2)
     {
         throw new Exception("Invalid number of arguments for get index expression.");
     }
     V_0 = new DynamicIndexerExpression(arguments.get_Item(0), this.objectTypeRef, instructions);
     V_1 = 1;
     while (V_1 < arguments.get_Count())
     {
         V_0.get_Indices().Add(arguments.get_Item(V_1));
         V_1 = V_1 + 1;
     }
     return(V_0);
 }
예제 #3
0
        private Expression GenerateGetIndexExpression(IList <Expression> arguments, IEnumerable <Instruction> instructions)
        {
            if (arguments.Count < 2)
            {
                throw new Exception("Invalid number of arguments for get index expression.");
            }

            DynamicIndexerExpression indexerExpression = new DynamicIndexerExpression(arguments[0], objectTypeRef, instructions);

            for (int i = 1; i < arguments.Count; i++)
            {
                indexerExpression.Indices.Add(arguments[i]);
            }
            return(indexerExpression);
        }
예제 #4
0
        private Expression GenerateSetIndexExpression(IList <Expression> arguments, IEnumerable <Instruction> instructions)
        {
            if (arguments.Count < 3)
            {
                throw new Exception("Invalid number of arguments for set index expression.");
            }

            DynamicIndexerExpression indexerExpression = new DynamicIndexerExpression(arguments[0], objectTypeRef, instructions);

            for (int i = 1; i < arguments.Count - 1; i++)
            {
                indexerExpression.Indices.Add(arguments[i]);
            }

            return(new BinaryExpression(BinaryOperator.Assign, indexerExpression, arguments[arguments.Count - 1], typeSystem, null));
        }
예제 #5
0
 public virtual void VisitDynamicIndexerExpression(DynamicIndexerExpression node)
 {
     VisitIIndexerExpression(node);
 }
예제 #6
0
 public virtual ICodeNode VisitDynamicIndexerExpression(DynamicIndexerExpression node)
 {
     return(VisitIIndexerExpression(node));
 }
예제 #7
0
 public virtual void VisitDynamicIndexerExpression(DynamicIndexerExpression node)
 {
     this.VisitIIndexerExpression(node);
     return;
 }