public virtual bool VisitAugAssignmentExpression(AugAssignmentExpression auAssignExp) { VisitNode(auAssignExp.Target); VisitNode(auAssignExp.Value); VisitExpression(auAssignExp); return(true); }
public void NestedDefinitionOfInstanceVars() { String contents = " \r\n" + "def some() \r\n" + " @x:int = 1 \r\n" + "end \r\n" + " \r\n" + "def some2() \r\n" + " @y += 2 \r\n" + "end \r\n" + " \r\n" + "@y:int = 1 \r\n" + ""; SourceUnit unit = container.ParserService.Parse(contents); AssertNoErrorOrWarnings(); Assert.IsNotNull(unit); Assert.AreEqual(3, unit.Statements.Count); DeclarationBinding sb = container[typeof(DeclarationBinding)] as DeclarationBinding; sb.ExecutePass(unit.CompilationUnit); Assert.IsNotNull(unit); Assert.AreEqual(4, unit.Statements.Count); AssertNoErrorOrWarnings(); MethodDefinitionStatement m1Stmt = unit.Statements[0] as MethodDefinitionStatement; MethodDefinitionStatement m2Stmt = unit.Statements[1] as MethodDefinitionStatement; SingleVariableDeclarationStatement varDecl1 = unit.Statements[2] as SingleVariableDeclarationStatement; SingleVariableDeclarationStatement varDecl2 = unit.Statements[3] as SingleVariableDeclarationStatement; Assert.IsNotNull(m1Stmt); Assert.IsNotNull(m2Stmt); Assert.IsNotNull(varDecl1); Assert.IsNotNull(varDecl2); Assert.AreEqual("some", m1Stmt.FullName); ExpressionStatement expStmt = m1Stmt.Statements[0] as ExpressionStatement; AssignmentExpression assignExp = expStmt.Expression as AssignmentExpression; Assert.AreEqual("@x", (assignExp.Target as VariableReferenceExpression).Identifier.Name); Assert.AreEqual("1", (assignExp.Value as LiteralReferenceExpression).Content); Assert.AreEqual("some2", m2Stmt.FullName); expStmt = m2Stmt.Statements[0] as ExpressionStatement; AugAssignmentExpression augExp = expStmt.Expression as AugAssignmentExpression; Assert.AreEqual("@y", (augExp.Target as VariableReferenceExpression).Identifier.Name); Assert.AreEqual("2", (augExp.Value as LiteralReferenceExpression).Content); }
public override bool VisitAugAssignmentExpression(AugAssignmentExpression auAssignExp) { nodeStack.Push(CurrentNode.Nodes.Add("AugAssignmentExpression")); CurrentNode.Tag = auAssignExp; CurrentNode.EnsureVisible(); base.VisitAugAssignmentExpression(auAssignExp); nodeStack.Pop(); return(true); }