Example #1
0
        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);
        }
Example #2
0
 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);
 }")
                ));
 }
Example #3
0
        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);
        }