Beispiel #1
0
        public static Task <Document> RefactorAsync(
            Document document,
            ForStatementSyntax forStatement,
            CancellationToken cancellationToken)
        {
            ForStatementSyntax newForStatement = forStatement;

            if (forStatement
                .DescendantTrivia(TextSpan.FromBounds(forStatement.FirstSemicolonToken.Span.End, forStatement.SecondSemicolonToken.Span.Start))
                .All(f => f.IsWhitespaceOrEndOfLineTrivia()))
            {
                newForStatement = forStatement.Update(
                    forStatement.ForKeyword,
                    forStatement.OpenParenToken,
                    forStatement.Declaration,
                    forStatement.Initializers,
                    forStatement.FirstSemicolonToken.WithTrailingTrivia(SyntaxFactory.Space),
                    default(ExpressionSyntax),
                    forStatement.SecondSemicolonToken.WithoutLeadingTrivia(),
                    forStatement.Incrementors,
                    forStatement.CloseParenToken,
                    forStatement.Statement);
            }
            else
            {
                newForStatement = forStatement.RemoveNode(forStatement.Condition, SyntaxRemoveOptions.KeepExteriorTrivia);
            }

            return(document.ReplaceNodeAsync(forStatement, newForStatement, cancellationToken));
        }
Beispiel #2
0
        protected override SyntaxNode VisitForStatement(ForStatementSyntax node)
        {
            if (!node.DescendentNodes().OfType <BlockSyntax>().Any())
            {
                node = node.Update(node.ForKeyword, node.OpenParenToken, node.DeclarationOpt,
                                   node.Initializers, node.FirstSemicolonToken, node.ConditionOpt,
                                   node.SecondSemicolonToken, node.Incrementors, node.CloseParenToken,
                                   Syntax.Block(statements: node.Statement));
            }

            return(base.VisitForStatement(node));
        }
Beispiel #3
0
        protected override SyntaxNode VisitForStatement(ForStatementSyntax node)
        {
            if (!node.DescendentNodes().OfType<BlockSyntax>().Any())
            {
                node = node.Update (node.ForKeyword, node.OpenParenToken, node.DeclarationOpt,
                                    node.Initializers, node.FirstSemicolonToken, node.ConditionOpt,
                                    node.SecondSemicolonToken, node.Incrementors, node.CloseParenToken,
                                    Syntax.Block (statements: node.Statement));
            }

            return base.VisitForStatement (node);
        }
Beispiel #4
0
        protected override SyntaxNode VisitForStatement(ForStatementSyntax node)
        {
            var inits     = RewritePostfixUnarys(node.Initializers);
            var condition = RewritePostfixUnarys(node.ConditionOpt);
            var incrs     = RewritePostfixUnarys(node.Incrementors);

            node = node.Update(node.ForKeyword, node.OpenParenToken, node.DeclarationOpt,
                               inits, node.FirstSemicolonToken, condition,
                               node.SecondSemicolonToken, incrs, node.CloseParenToken,
                               GetLoopBlock(node.Statement));

            this.loopLevel++;
            var statement = base.VisitForStatement((ForStatementSyntax)node.WithAdditionalAnnotations(this.isLoop));

            this.loopLevel--;
            return(statement);
        }
Beispiel #5
0
        protected override SyntaxNode VisitForStatement(ForStatementSyntax node)
        {
            node = node.Update (node.ForKeyword, node.OpenParenToken, node.DeclarationOpt,
                                node.Initializers, node.FirstSemicolonToken, node.ConditionOpt,
                                node.SecondSemicolonToken, node.Incrementors, node.CloseParenToken,
                                GetLoopBlock (node.Statement));

            this.loopLevel++;
            var statement = base.VisitForStatement ((ForStatementSyntax)node.WithAdditionalAnnotations (this.isLoop));
            this.loopLevel--;
            return statement;
        }