public override SyntaxNode VisitBlock(BlockSyntax node) { _block = node; if (node.LastStatementOrDefault(skipLocalFunction: true) is IfStatementSyntax ifStatement && IsFixable(ifStatement)) { SyntaxList <StatementSyntax> statements = node.Statements; int index = statements.IndexOf(ifStatement); ifStatement = (IfStatementSyntax)VisitIfStatement(ifStatement); var block = (BlockSyntax)ifStatement.Statement; ExpressionSyntax newCondition = Negator.LogicallyNegate(ifStatement.Condition); IfStatementSyntax newIfStatement = ifStatement .WithCondition(newCondition) .WithStatement(block.WithStatements(SingletonList(_jumpStatement))) .WithFormatterAnnotation(); SyntaxList <StatementSyntax> newStatements = statements .ReplaceAt(index, newIfStatement) .InsertRange(index + 1, block.Statements.Select(f => f.WithFormatterAnnotation())); node = node.WithStatements(newStatements); } return(node); }
public override SyntaxNode VisitBlock(BlockSyntax node) { _block = node; if (node.LastStatementOrDefault(skipLocalFunction: true) is IfStatementSyntax ifStatement && IsFixable(ifStatement)) { SyntaxList <StatementSyntax> statements = node.Statements; int index = statements.IndexOf(ifStatement); if (_recursive) { ifStatement = (IfStatementSyntax)VisitIfStatement(ifStatement); } var block = (BlockSyntax)ifStatement.Statement; ExpressionSyntax newCondition = Negator.LogicallyNegate(ifStatement.Condition); BlockSyntax newBlock = block.WithStatements(SingletonList(_jumpStatement)); if (!block .Statements .First() .GetLeadingTrivia() .Any(f => f.IsEndOfLineTrivia())) { newBlock = newBlock.WithCloseBraceToken(newBlock.CloseBraceToken.AppendToTrailingTrivia(NewLine())); } IfStatementSyntax newIfStatement = ifStatement .WithCondition(newCondition) .WithStatement(newBlock) .WithFormatterAnnotation(); SyntaxList <StatementSyntax> newStatements = statements .ReplaceAt(index, newIfStatement) .InsertRange(index + 1, block.Statements.Select(f => f.WithFormatterAnnotation())); node = node.WithStatements(newStatements); } return(node); }