private static ExpressionSyntax NegateConditionalExpression(ConditionalExpressionSyntax conditionalExpression) { ExpressionSyntax whenTrue = conditionalExpression.WhenTrue; ExpressionSyntax whenFalse = conditionalExpression.WhenFalse; if (whenTrue?.IsKind(SyntaxKind.ThrowExpression) == false) { whenTrue = whenTrue .LogicallyNegate() .ParenthesizeIfNecessary(SyntaxKind.ConditionalExpression) .WithTriviaFrom(whenTrue); } if (whenFalse?.IsKind(SyntaxKind.ThrowExpression) == false) { whenFalse = whenFalse .LogicallyNegate() .ParenthesizeIfNecessary(SyntaxKind.ConditionalExpression) .WithTriviaFrom(whenFalse); } ConditionalExpressionSyntax newConditionalExpression = conditionalExpression.Update( conditionalExpression.Condition, conditionalExpression.QuestionToken, whenTrue, conditionalExpression.ColonToken, whenFalse); return(newConditionalExpression.WithTriviaFrom(conditionalExpression)); }
private static ExpressionSyntax NegateConditionalExpression( ConditionalExpressionSyntax conditionalExpression, SemanticModel semanticModel, CancellationToken cancellationToken) { ExpressionSyntax whenTrue = conditionalExpression.WhenTrue; ExpressionSyntax whenFalse = conditionalExpression.WhenFalse; if (whenTrue?.IsKind(SyntaxKind.ThrowExpression) == false) { whenTrue = LogicallyNegateAndParenthesize(whenTrue, semanticModel, cancellationToken); } if (whenFalse?.IsKind(SyntaxKind.ThrowExpression) == false) { whenFalse = LogicallyNegateAndParenthesize(whenFalse, semanticModel, cancellationToken); } ConditionalExpressionSyntax newConditionalExpression = conditionalExpression.Update( conditionalExpression.Condition, conditionalExpression.QuestionToken, whenTrue, conditionalExpression.ColonToken, whenFalse); return(newConditionalExpression.WithTriviaFrom(conditionalExpression)); }
public static Task <Document> RefactorAsync( Document document, ConditionalExpressionSyntax conditionalExpression, CancellationToken cancellationToken = default(CancellationToken)) { ConditionalExpressionSyntax newNode = conditionalExpression.Update( condition: Negator.LogicallyNegate(conditionalExpression.Condition), questionToken: conditionalExpression.QuestionToken, whenTrue: conditionalExpression.WhenFalse.WithTriviaFrom(conditionalExpression.WhenTrue), colonToken: conditionalExpression.ColonToken, whenFalse: conditionalExpression.WhenTrue.WithTriviaFrom(conditionalExpression.WhenFalse)); newNode = newNode.WithFormatterAnnotation(); return(document.ReplaceNodeAsync(conditionalExpression, newNode, cancellationToken)); }
public static async Task <Document> RefactorAsync( Document document, ConditionalExpressionSyntax conditionalExpression, CancellationToken cancellationToken = default(CancellationToken)) { SemanticModel semanticModel = await document.GetSemanticModelAsync(cancellationToken).ConfigureAwait(false); ConditionalExpressionSyntax newNode = conditionalExpression.Update( condition: CSharpUtility.LogicallyNegate(conditionalExpression.Condition, semanticModel, cancellationToken), questionToken: conditionalExpression.QuestionToken, whenTrue: conditionalExpression.WhenFalse.WithTriviaFrom(conditionalExpression.WhenTrue), colonToken: conditionalExpression.ColonToken, whenFalse: conditionalExpression.WhenTrue.WithTriviaFrom(conditionalExpression.WhenFalse)); newNode = newNode.WithFormatterAnnotation(); return(await document.ReplaceNodeAsync(conditionalExpression, newNode, cancellationToken).ConfigureAwait(false)); }