コード例 #1
0
 public override ICodeNode VisitCatchClause(CatchClause node)
 {
     node.set_Body((BlockStatement)this.Visit(node.get_Body()));
     if (node.get_Filter() == null || node.get_Filter() as BlockStatement == null)
     {
         return(node);
     }
     this.currentCatchClause = node;
     node.set_Filter((Statement)this.Visit(node.get_Filter()));
     this.currentCatchClause = null;
     stackVariable27         = CatchClausesFilterPattern.TryMatch(node.get_Filter() as BlockStatement, out V_0, out V_1);
     if (!stackVariable27)
     {
         if (V_0 == null || String.op_Equality(V_0.get_ExpressionType().get_FullName(), "System.Object") || !CatchClausesFilterPattern.TryMatchMethodStructure(node.get_Filter() as BlockStatement))
         {
             throw new NotSupportedException("Unsupported structure of filter clause.");
         }
         this.CreateMethod(node, V_0, out V_1);
     }
     dummyVar0 = this.context.get_MethodContext().get_VariablesToNotDeclare().Add(V_0.get_Variable());
     if (!stackVariable27)
     {
         node.set_Variable(V_0.CloneExpressionOnly() as VariableDeclarationExpression);
     }
     else
     {
         node.set_Variable(V_0);
     }
     node.set_Type(V_0.get_ExpressionType());
     node.set_Filter(new ExpressionStatement(V_1));
     return(node);
 }