Esempio n. 1
0
        public override SyntaxNode VisitGlobalStatement(GlobalStatementSyntax node)
        {
            node = (GlobalStatementSyntax)base.VisitGlobalStatement(node).NotNull();

            if (node.Statement is not ExpressionStatementSyntax expressionStatement)
            {
                return(node
                       .WithLeadingTrivia(BeginMultilineComment)
                       .WithTrailingTrivia(EndMultilineComment));
            }

            var invocationExpression = expressionStatement.Expression as InvocationExpressionSyntax;
            var identifierName       = invocationExpression?.GetIdentifierName();

            if (identifierName == "Setup" ||
                identifierName == "Teardown")
            {
                return(node
                       .WithLeadingTrivia(BeginMultilineComment)
                       .WithTrailingTrivia(EndMultilineComment));
            }

            if (identifierName == "RunTarget")
            {
                var expression = invocationExpression.GetSingleArgument <ExpressionSyntax>();
                if (expression is IdentifierNameSyntax targetIdentifier)
                {
                    _defaultTargetFieldName = targetIdentifier.Identifier.Text;
                }
                if (expression is LiteralExpressionSyntax literalExpression)
                {
                    _defaultTargetName = literalExpression.GetConstantValue <string>();
                }
                return(null);
            }

            return(node);
        }