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)); }
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)); }
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); }
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); }
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; }