public override ICodeNode VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     node = (ObjectCreationExpression)this.VisitObjectCreationExpression(node);
     if (node.get_Arguments().get_Count() != 0)
     {
         this.VisitInvocationArguments(node.get_Arguments(), node.get_Constructor());
     }
     return(node);
 }
 public override ICodeNode VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     if (this.state != 2 || node.get_Arguments() == null || node.get_Arguments().get_Count() != 2 || node.get_Arguments().get_Item(0).get_CodeNodeType() != 26 || node.get_Arguments().get_Item(1).get_CodeNodeType() != 20 || !this.delegateCopies.Contains((node.get_Arguments().get_Item(0) as VariableReferenceExpression).get_Variable()))
     {
         return(this.VisitObjectCreationExpression(node));
     }
     V_0 = node.get_Constructor().get_DeclaringType().Resolve();
     if (V_0 == null || V_0.get_BaseType() == null || String.op_Inequality(V_0.get_BaseType().get_FullName(), "System.MulticastDelegate"))
     {
         return(this.VisitObjectCreationExpression(node));
     }
     V_1             = (node.get_Arguments().get_Item(1) as MethodReferenceExpression).get_Method();
     V_2             = (node.get_Arguments().get_Item(1) as MethodReferenceExpression).get_MethodDefinition();
     stackVariable62 = new MethodSpecificContext(V_2.get_Body());
     V_3             = new DecompilationContext(stackVariable62, this.context.get_TypeContext(), this.context.get_ModuleContext(), this.context.get_AssemblyContext(), this.context.get_Language());
     stackVariable62.set_FieldToExpression(this.fieldDefToAssignedValueMap);
     V_4 = V_2.get_Body().DecompileLambda(this.context.get_Language(), V_3);
     if (V_4.get_Statements().get_Count() == 1 && V_4.get_Statements().get_Item(0).get_CodeNodeType() == 5 && (V_4.get_Statements().get_Item(0) as ExpressionStatement).get_Expression().get_CodeNodeType() == 57)
     {
         V_8 = (V_4.get_Statements().get_Item(0) as ExpressionStatement).get_Expression() as ReturnExpression;
         V_9 = new ShortFormReturnExpression(V_8.get_Value(), V_8.get_MappedInstructions());
         V_4 = new BlockStatement();
         V_4.get_Statements().Add(new ExpressionStatement(V_9));
     }
     this.context.get_MethodContext().get_VariableDefinitionToNameMap().AddRange <VariableDefinition, string>(V_3.get_MethodContext().get_VariableDefinitionToNameMap());
     this.context.get_MethodContext().get_VariableNamesCollection().UnionWith(V_3.get_MethodContext().get_VariableNamesCollection());
     this.context.get_MethodContext().AddInnerMethodParametersToContext(V_3.get_MethodContext());
     this.context.get_MethodContext().get_GotoStatements().AddRange(V_3.get_MethodContext().get_GotoStatements());
     this.context.get_MethodContext().get_GotoLabels().AddRange <string, Statement>(V_3.get_MethodContext().get_GotoLabels());
     V_5  = new ExpressionCollection();
     V_6  = LambdaExpressionsHelper.HasAnonymousParameter(V_2.get_Parameters());
     V_10 = V_2.get_Parameters().GetEnumerator();
     try
     {
         while (V_10.MoveNext())
         {
             V_11 = V_10.get_Current();
             V_5.Add(new LambdaParameterExpression(V_11, !V_6, null));
         }
     }
     finally
     {
         V_10.Dispose();
     }
     this.delegatesFound.Add(V_4);
     stackVariable157 = new LambdaExpression(V_5, V_4, V_2.IsAsync(), V_2.IsFunction(), V_1.get_Parameters(), false, node.get_Arguments().get_Item(1).get_MappedInstructions());
     stackVariable157.set_ExpressionType(V_0);
     V_7 = stackVariable157;
     return(new DelegateCreationExpression(node.get_Constructor().get_DeclaringType(), V_7, node.get_Arguments().get_Item(0), node.get_MappedInstructions()));
 }
 private TypeReference GetUseInObjectCreation(ObjectCreationExpression objectCreationExpression, VariableReference variable)
 {
     V_0 = null;
     V_1 = objectCreationExpression.get_Arguments().GetEnumerator();
     try
     {
         while (V_1.MoveNext())
         {
             V_2 = V_1.get_Current();
             if (V_2 as VariableReferenceExpression == null || (object)(V_2 as VariableReferenceExpression).get_Variable() != (object)variable)
             {
                 continue;
             }
             V_0 = V_2;
         }
     }
     finally
     {
         if (V_1 != null)
         {
             V_1.Dispose();
         }
     }
     return(objectCreationExpression.get_Constructor().get_Parameters().get_Item(objectCreationExpression.get_Arguments().IndexOf(V_0)).ResolveParameterType(objectCreationExpression.get_Constructor()));
 }
예제 #4
0
 public override ICodeNode VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     dummyVar0 = this.VisitObjectCreationExpression(node);
     if (node.get_Constructor() == null)
     {
         return(node);
     }
     V_0 = node.get_Constructor().get_DeclaringType().Resolve();
     if (V_0 == null || V_0.get_BaseType() == null || String.op_Inequality(V_0.get_BaseType().get_FullName(), "System.MulticastDelegate") || node.get_Arguments().get_Count() != 2 || node.get_Arguments().get_Item(1).get_CodeNodeType() != 50)
     {
         return(node);
     }
     (node.get_Arguments().get_Item(1) as LambdaExpression).set_ExpressionType(V_0);
     V_1 = node.get_Arguments().get_Item(0);
     return(new DelegateCreationExpression(node.get_ExpressionType(), node.get_Arguments().get_Item(1), V_1, node.get_MappedInstructions()));
 }
 public override void VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     this.VisitObjectCreationExpression(node);
     if (node.get_Constructor() != null)
     {
         this.CheckArguments(node.get_Constructor().get_Parameters(), node.get_Arguments());
     }
     return;
 }
예제 #6
0
 public override void VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     this.VisitObjectCreationExpression(node);
     V_0 = node.get_Constructor();
     if (V_0 != null)
     {
         this.TraverseMethodParameters(V_0, node.get_Arguments());
     }
     return;
 }
예제 #7
0
 public virtual void VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     this.Visit(node.get_Arguments());
     this.Visit(node.get_Initializer());
     return;
 }
예제 #8
0
 public override void VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     this.VisitObjectCreationExpression(node);
     this.CastMethodArguments(node.get_Constructor(), node.get_Arguments());
     return;
 }
 public override ICodeNode VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     dummyVar0 = this.VisitObjectCreationExpression(node);
     this.FixArguments(node.get_Constructor(), node.get_Arguments());
     return(node);
 }
 public ICodeNode VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     if (node.get_Type() == null || node.get_Constructor() == null || !node.get_Type().get_IsGenericInstance())
     {
         return(null);
     }
     V_0 = node.get_Type().Resolve();
     if (!V_0.IsAnonymous())
     {
         return(null);
     }
     this.initializerExpressions = new BlockExpression(null);
     this.ProcessAnonymousType(V_0, node.get_Type() as GenericInstanceType, node.get_Constructor().Resolve(), node.get_Arguments());
     V_1 = new InitializerExpression(this.initializerExpressions, 3);
     return(new AnonymousObjectCreationExpression(node.get_Constructor(), V_0, V_1, node.get_MappedInstructions()));
 }
 public virtual ICodeNode VisitObjectCreationExpression(ObjectCreationExpression node)
 {
     node.set_Arguments((ExpressionCollection)this.Visit(node.get_Arguments()));
     node.set_Initializer((InitializerExpression)this.Visit(node.get_Initializer()));
     return(node);
 }