public CSharpSyntaxNode Convert(ForStatement node) { ForStatementSyntax csForStatement = SyntaxFactory.ForStatement(node.Statement.ToCsNode <StatementSyntax>()); Node initializer = node.Initializer; if (initializer != null) { if (initializer.Kind == NodeKind.VariableDeclarationList) { csForStatement = csForStatement.WithDeclaration(initializer.ToCsNode <VariableDeclarationSyntax>()); } else { csForStatement = csForStatement.AddInitializers(node.Initializers.ToCsNodes <ExpressionSyntax>()); } } if (node.Condition != null) { csForStatement = csForStatement.WithCondition(node.Condition.ToCsNode <ExpressionSyntax>()); } if (node.Incrementors != null) { csForStatement = csForStatement.AddIncrementors(node.Incrementors.ToCsNodes <ExpressionSyntax>()); } return(csForStatement); }
public override SyntaxNode VisitForStatement(ForStatementSyntax node) { // update the current node with the new condition and statement return(node.WithCondition( SyntaxFactory.ParseExpression("i>=0") ).WithStatement( SyntaxFactory.ParseStatement(@"{ Console.WriteLine(i); Console.WriteLine(i*2); }") )); }
private static void RegisterForStatementConditionRemoval(CodeFixContext context, SyntaxNode root, ForStatementSyntax forStatement) { context.RegisterCodeFix( CodeAction.Create( Title, c => { var newRoot = root.ReplaceNode( forStatement, forStatement.WithCondition(null).WithAdditionalAnnotations(Formatter.Annotation)); return(Task.FromResult(context.Document.WithSyntaxRoot(newRoot))); }), context.Diagnostics); }