コード例 #1
0
 private void ManageIsEventOperations(HashSet <Statement> statementsToRemove)
 {
     V_0 = this.isEventIfStatements.GetEnumerator();
     try
     {
         while (V_0.MoveNext())
         {
             V_1 = V_0.get_Current();
             V_2 = V_1.get_Key();
             V_3 = V_1.get_Value();
             if (V_2.get_Condition().get_CodeNodeType() != 23 || (V_2.get_Condition() as UnaryExpression).get_Operator() != 11 || (V_2.get_Condition() as UnaryExpression).get_Operand() != V_3)
             {
                 if (V_2.get_Condition().get_CodeNodeType() != 23 || (V_2.get_Condition() as UnaryExpression).get_Operator() != UnaryOperator.Negate || (V_2.get_Condition() as UnaryExpression).get_Operand() != V_3)
                 {
                     throw new Exception("Invalid invocation of IsEvent operation.");
                 }
                 this.ReplaceIfWith(V_2, V_2.get_Else());
             }
             else
             {
                 V_4 = V_2.get_Then().get_Statements().get_Item(V_2.get_Then().get_Statements().get_Count() - 1);
                 if (V_4.get_CodeNodeType() == 5 && ((ExpressionStatement)V_4).get_Expression().get_CodeNodeType() == 57)
                 {
                     V_5 = (BlockStatement)V_2.get_Parent();
                     V_6 = V_5.get_Statements().IndexOf(V_2) + 1;
                     while (V_6 < V_5.get_Statements().get_Count())
                     {
                         dummyVar0 = statementsToRemove.Add(V_5.get_Statements().get_Item(V_6));
                         V_6       = V_6 + 1;
                     }
                 }
                 this.ReplaceIfWith(V_2, V_2.get_Then());
             }
             V_7 = V_2.get_Then().get_Statements().GetEnumerator();
             try
             {
                 while (V_7.MoveNext())
                 {
                     V_8       = V_7.get_Current();
                     dummyVar1 = statementsToRemove.Remove(V_8);
                 }
             }
             finally
             {
                 if (V_7 != null)
                 {
                     V_7.Dispose();
                 }
             }
             if (V_2.get_Else() == null)
             {
                 continue;
             }
             V_7 = V_2.get_Else().get_Statements().GetEnumerator();
             try
             {
                 while (V_7.MoveNext())
                 {
                     V_9       = V_7.get_Current();
                     dummyVar2 = statementsToRemove.Remove(V_9);
                 }
             }
             finally
             {
                 if (V_7 != null)
                 {
                     V_7.Dispose();
                 }
             }
         }
     }
     finally
     {
         ((IDisposable)V_0).Dispose();
     }
     return;
 }
コード例 #2
0
 protected override bool TryMatchInternal(StatementCollection statements, int startIndex, out Statement result, out int replacedStatementsCount)
 {
     result = null;
     replacedStatementsCount = 0;
     if (!this.TryGetObjectCreation(statements, startIndex, out V_0, out V_1))
     {
         return(false);
     }
     if (V_0.get_Initializer() != null && V_0.get_Initializer().get_InitializerType() != InitializerType.CollectionInitializer)
     {
         return(false);
     }
     if (!this.ImplementsInterface(V_0.get_Type(), "System.Collections.IEnumerable"))
     {
         return(false);
     }
     V_2 = new ExpressionCollection();
     V_3 = startIndex + 1;
     while (V_3 < statements.get_Count() && this.TryGetNextExpression(statements.get_Item(V_3), out V_4) && V_4.get_CodeNodeType() == 19)
     {
         V_5 = V_4 as MethodInvocationExpression;
         V_6 = V_5.get_MethodExpression().get_MethodDefinition();
         if (!this.CompareTargets(V_1, V_5.get_MethodExpression().get_Target()) || String.op_Inequality(V_6.get_Name(), "Add") || V_5.get_Arguments().get_Count() == 0)
         {
             break;
         }
         if (V_5.get_Arguments().get_Count() != 1)
         {
             stackVariable88 = V_5.get_Arguments();
             stackVariable89 = CollectionInitializationPattern.u003cu003ec.u003cu003e9__1_0;
             if (stackVariable89 == null)
             {
                 dummyVar0       = stackVariable89;
                 stackVariable89 = new Func <Expression, Expression>(CollectionInitializationPattern.u003cu003ec.u003cu003e9.u003cTryMatchInternalu003eb__1_0);
                 CollectionInitializationPattern.u003cu003ec.u003cu003e9__1_0 = stackVariable89;
             }
             V_7 = new BlockExpression(new ExpressionCollection(stackVariable88.Select <Expression, Expression>(stackVariable89)), null);
             V_2.Add(V_7);
         }
         else
         {
             V_2.Add(V_5.get_Arguments().get_Item(0).Clone());
         }
         V_3 = V_3 + 1;
     }
     if (V_2.get_Count() == 0)
     {
         return(false);
     }
     if (V_0.get_Initializer() != null)
     {
         V_9 = V_2.GetEnumerator();
         try
         {
             while (V_9.MoveNext())
             {
                 V_10 = V_9.get_Current();
                 V_0.get_Initializer().get_Expressions().Add(V_10);
             }
         }
         finally
         {
             if (V_9 != null)
             {
                 V_9.Dispose();
             }
         }
     }
     else
     {
         V_8 = new InitializerExpression(V_2, 0);
         V_8.set_IsMultiLine(true);
         V_0.set_Initializer(V_8);
     }
     result = statements.get_Item(startIndex);
     replacedStatementsCount = V_2.get_Count() + 1;
     return(true);
 }