public override async Task ComputeRefactoringsAsync(CodeRefactoringContext context) { SyntaxNode root = await context.Document.GetSyntaxRootAsync(context.CancellationToken); ConditionalExpressionSyntax conditionalExpression = root .FindNode(context.Span, getInnermostNodeForTie: true)? .FirstAncestorOrSelf <ConditionalExpressionSyntax>(); if (conditionalExpression == null) { return; } if (conditionalExpression.IsSingleline()) { context.RegisterRefactoring( "Format conditional expression on multiple lines", cancellationToken => FormatConditionalExpressionOnMultipleLinesAsync(context.Document, conditionalExpression, cancellationToken)); } else { context.RegisterRefactoring( "Format conditional expression on a single line", cancellationToken => FormatConditionalExpressionOnSingleLineAsync(context.Document, conditionalExpression, cancellationToken)); } ConditionalExpressionToIfElseRefactoring.Refactor(context, conditionalExpression); if (conditionalExpression.Condition != null && conditionalExpression.WhenTrue != null && conditionalExpression.WhenFalse != null && conditionalExpression.Condition.Span.Contains(context.Span)) { context.RegisterRefactoring( "Swap conditional expression's statements", cancellationToken => { return(SwapStatementsAsync( context.Document, conditionalExpression, cancellationToken)); }); } }