private static bool CheckContainingNode(SyntaxNode node) { switch (node.Kind()) { case SyntaxKind.ForEachStatement: case SyntaxKind.ForStatement: case SyntaxKind.UsingStatement: case SyntaxKind.WhileStatement: case SyntaxKind.DoStatement: case SyntaxKind.LockStatement: case SyntaxKind.FixedStatement: case SyntaxKind.UnsafeStatement: case SyntaxKind.TryStatement: case SyntaxKind.CheckedStatement: case SyntaxKind.UncheckedStatement: return(true); case SyntaxKind.IfStatement: return(IfElseChainAnalysis.IsTopmostIf((IfStatementSyntax)node)); case SyntaxKind.ElseClause: return(IfElseChainAnalysis.IsEndOfChain((ElseClauseSyntax)node)); } return(false); }
private static void AddBracesToIfElseChain(CodeRefactoringContext context, IfStatementSyntax ifStatement) { if (IfElseChainAnalysis.IsTopmostIf(ifStatement) && ifStatement.Else != null && ifStatement.IfKeyword.Span.Contains(context.Span)) { var result = new IfElseChainAnalysisResult(ifStatement); if (result.AddBracesToChain) { context.RegisterRefactoring( "Add braces to if-else chain", cancellationToken => { return(AddBracesToIfElseChainRefactoring.RefactorAsync( context.Document, ifStatement, cancellationToken)); }); } if (result.RemoveBracesFromChain) { context.RegisterRefactoring( "Remove braces from if-else chain", cancellationToken => { return(RemoveBracesFromIfElseChainRefactoring.RefactorAsync( context.Document, ifStatement, cancellationToken)); }); } } }
private static void SwapStatements(CodeRefactoringContext context, IfStatementSyntax ifStatement) { if (IfElseChainAnalysis.IsTopmostIf(ifStatement) && ifStatement.Statement != null && ifStatement.Condition != null && ifStatement.Condition.Span.Contains(context.Span)) { StatementSyntax falseStatement = ifStatement.Else?.Statement; if (falseStatement != null && !falseStatement.IsKind(SyntaxKind.IfStatement)) { context.RegisterRefactoring( "Swap if-else statements", cancellationToken => { return(SwapStatementsAsync( context.Document, ifStatement, cancellationToken)); }); } } }