private ICodeNode VisitAssignExpression(BinaryExpression node) { V_0 = CodePattern.Match(SelfAssignment.IncrementPattern, node); if (V_0.get_Success()) { V_1 = (Expression)V_0.get_Item("Target"); V_2 = (BinaryOperator)V_0.get_Item("Operator"); if (V_2 == 1 || V_2 == 3) { return new UnaryExpression(SelfAssignment.GetCorrespondingOperator(V_2), V_1.CloneExpressionOnly(), node.get_UnderlyingSameMethodInstructions()); } } V_0 = CodePattern.Match(SelfAssignment.AssignmentOperatorPattern, node); if (V_0.get_Success()) { V_1 = (Expression)V_0.get_Item("Target"); V_3 = (BinaryExpression)V_0.get_Item("RightSide"); V_4 = (Expression)V_0.get_Item("Value"); if (this.normalToAssignOperatorMap.ContainsKey(V_3.get_Operator())) { V_5 = new List<Instruction>(); V_5.AddRange(V_3.get_MappedInstructions()); V_5.AddRange(V_1.get_MappedInstructions()); stackVariable41 = this.normalToAssignOperatorMap.get_Item(V_3.get_Operator()); V_6 = V_1.CloneExpressionOnlyAndAttachInstructions(V_3.get_Left().get_MappedInstructions()); return new BinaryExpression(stackVariable41, V_6, V_4, this.typeSystem, V_5, false); } } return this.VisitBinaryExpression(node); }
private bool TryMatchCanCastPattern(BinaryExpression node, IEnumerable <ICodePattern> patterns, out CanCastExpression result) { V_0 = patterns.GetEnumerator(); try { while (V_0.MoveNext()) { V_1 = CodePattern.Match(V_0.get_Current(), node); if (!V_1.get_Success()) { continue; } result = this.CreateCanCastExpression(V_1, node); V_2 = true; goto Label1; } goto Label0; } finally { if (V_0 != null) { V_0.Dispose(); } } Label1: return(V_2); Label0: result = null; return(false); }