コード例 #1
0
 private bool TryRemoveOuterTryCatch(StatementCollection statements)
 {
     V_0 = 0;
     while (V_0 < statements.get_Count())
     {
         V_3 = statements.get_Item(V_0);
         if (V_3.get_CodeNodeType() == 17 && (V_3 as TryStatement).get_CatchClauses().get_Count() == 1)
         {
             break;
         }
         V_0 = V_0 + 1;
     }
     if (V_0 == statements.get_Count())
     {
         return(false);
     }
     V_1 = statements.get_Item(V_0) as TryStatement;
     V_2 = V_1.get_Try().get_Statements();
     if (this.asyncData.get_StateField() == null && !this.TryGetStateField(V_1.get_CatchClauses().get_Item(0).get_Body()))
     {
         return(false);
     }
     statements.RemoveAt(V_0);
     V_4 = 0;
     while (V_4 < V_2.get_Count())
     {
         statements.Insert(V_0 + V_4, V_2.get_Item(V_4));
         V_4 = V_4 + 1;
     }
     return(true);
 }
コード例 #2
0
 public override ICodeNode VisitIfStatement(IfStatement node)
 {
     V_0 = this.VisitIfStatement(node);
     if (V_0.get_CodeNodeType() != 3)
     {
         return(V_0);
     }
     V_1 = (IfStatement)V_0;
     if (V_1.get_Else() == null)
     {
         return(V_1);
     }
     if (V_1.get_Else().get_Statements().get_Count() == 1)
     {
         V_3 = V_1.get_Else().get_Statements().get_Item(0);
         if (V_3.get_CodeNodeType() == 3 || V_3.get_CodeNodeType() == 4)
         {
             return(this.HandleDirectIfStatement(V_1));
         }
     }
     if (V_1.get_Then().get_Statements().get_Count() != 1)
     {
         return(V_1);
     }
     V_2 = V_1.get_Then().get_Statements().get_Item(0);
     if (V_2.get_CodeNodeType() != 3 && V_2.get_CodeNodeType() != 4)
     {
         return(V_1);
     }
     this.InvertIfStatement(V_1);
     return(this.BuildIfElseIfStatement(V_1));
 }