Exemplo n.º 1
0
        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);
        }
Exemplo n.º 3
0
        public override bool VisitAugAssignmentExpression(AugAssignmentExpression auAssignExp)
        {
            nodeStack.Push(CurrentNode.Nodes.Add("AugAssignmentExpression"));
            CurrentNode.Tag = auAssignExp;

            CurrentNode.EnsureVisible();

            base.VisitAugAssignmentExpression(auAssignExp);

            nodeStack.Pop();

            return(true);
        }