public override Expression VisitAssignmentExpression(AssignmentExpression assignment) { return base.VisitAssignmentExpression(assignment); }
public override Expression VisitAssignmentExpression(AssignmentExpression assignment) { if (assignment == null) return null; AssignmentExpression newAssignment = new AssignmentExpression(); newAssignment.AssignmentStatement = (Statement)this.Visit(assignment.AssignmentStatement); // For symbolic execution, assignment statements become method calls. So we // have to rewrite the IR so that these are no longer buried inside an // AssignmentStatement. ExpressionStatement exprStmt = newAssignment.AssignmentStatement as ExpressionStatement; if (exprStmt != null) return exprStmt.Expression; else return newAssignment; }
public virtual Expression VisitAssignmentExpression(AssignmentExpression assignment) { if (assignment == null) return null; assignment.AssignmentStatement = (Statement)this.Visit(assignment.AssignmentStatement); return assignment; }
public override Expression VisitAssignmentExpression(AssignmentExpression assignment) { if (assignment == null) return null; return base.VisitAssignmentExpression((AssignmentExpression)assignment.Clone()); }
private Expression ParseAssignmentExpression(Expression operand1, TokenSet followers){ Debug.Assert(Parser.InfixOperators[this.currentToken]); Debug.Assert(this.currentToken != Token.Conditional); switch (this.currentToken){ case Token.AddAssign: case Token.Assign: case Token.BitwiseAndAssign: case Token.BitwiseOrAssign: case Token.BitwiseXorAssign: case Token.DivideAssign: case Token.LeftShiftAssign: case Token.MultiplyAssign: case Token.RemainderAssign: case Token.RightShiftAssign: case Token.SubtractAssign: Token assignmentOperator = this.currentToken; this.GetNextToken(); Expression operand2 = this.ParseExpression(followers); if (operand1 == null || operand2 == null) return null; AssignmentStatement statement = new AssignmentStatement(operand1, operand2, Parser.ConvertToBinaryNodeType(assignmentOperator)); statement.SourceContext = operand1.SourceContext; statement.SourceContext.EndPos = operand2.SourceContext.EndPos; Expression expression = new AssignmentExpression(statement); expression.SourceContext = statement.SourceContext; return expression; default: operand1 = this.ParseBinaryExpression(operand1, followers|Token.Conditional); if (operand1 != null && this.currentToken == Token.Conditional) return this.ParseConditional(operand1, followers); return operand1; } }
public EventingVisitor(Action<AssignmentExpression> visitAssignmentExpression) { VisitedAssignmentExpression += visitAssignmentExpression; } public event Action<AssignmentExpression> VisitedAssignmentExpression; public override Expression VisitAssignmentExpression(AssignmentExpression assignment) { if (VisitedAssignmentExpression != null) VisitedAssignmentExpression(assignment); return base.VisitAssignmentExpression(assignment); }