Пример #1
0
        protected void AssertVariableDeclaration(string src,
                                                 string identifier,
                                                 string type,
                                                 AccessModifiers access    = AccessModifiers.Unspecified,
                                                 QualifierFlags qualifiers = QualifierFlags.None,
                                                 object?value = null)
        {
            DeclStatNode decl = this.AssertDeclarationNode(src, type, access, qualifiers);

            Assert.That(decl.DeclaratorList.Parent, Is.EqualTo(decl));
            VarDeclNode var = decl.DeclaratorList.Declarators.Single().As <VarDeclNode>();

            Assert.That(var.Parent, Is.EqualTo(decl.DeclaratorList));
            Assert.That(var.Identifier, Is.EqualTo(identifier));
            Assert.That(var.Children.First().As <IdNode>().Identifier, Is.EqualTo(identifier));
            if (value is { })
Пример #2
0
        protected DeclStatNode AssertDeclarationNode(string src,
                                                     string type,
                                                     AccessModifiers access    = AccessModifiers.Unspecified,
                                                     QualifierFlags qualifiers = QualifierFlags.None)
        {
            ASTNode      ast  = this.GenerateAST(src);
            DeclStatNode decl = ast is SourceNode block
                ? this.ExtractDeclarationFromBlock(block)
                : ast.As <DeclStatNode>();

            Assert.That(decl.Children, Has.Exactly(2).Items);
            Assert.That(decl.Specifiers.Parent, Is.EqualTo(decl));
            Assert.That(decl.Specifiers.Modifiers.AccessModifiers, Is.EqualTo(access));
            Assert.That(decl.Specifiers.Modifiers.QualifierFlags, Is.EqualTo(qualifiers));
            Assert.That(decl.Specifiers.TypeName, Is.EqualTo(type));
            Assert.That(decl.Specifiers.Children, Is.Empty);
            return(decl);
        }
Пример #3
0
        public void VariableDeclarationDifferenceTest1()
        {
            ASTNode ast1 = new DeclStatNode(
                1,
                new DeclSpecsNode(1, "public static", "int"),
                new DeclListNode(
                    1,
                    new VarDeclNode(
                        2,
                        new IdNode(2, "x"),
                        new ArithmExprNode(
                            3,
                            new LitExprNode(4, 2),
                            ArithmOpNode.FromSymbol(4, "+"),
                            new LitExprNode(4, 1)
                            )
                        )
                    )
                );
            ASTNode ast2 = new DeclStatNode(
                2,
                new DeclSpecsNode(2, "public static", "int"),
                new DeclListNode(
                    2,
                    new VarDeclNode(
                        2,
                        new IdNode(2, "x"),
                        new ArithmExprNode(
                            3,
                            new LitExprNode(4, 1),
                            ArithmOpNode.FromSymbol(4, "+"),
                            new LitExprNode(4, 1)
                            )
                        )
                    )
                );

            AssertNodes(ast1, ast2, eq: false);
        }
Пример #4
0
 public virtual TResult Visit(DeclStatNode node) => this.VisitChildren(node);