private static Task <Document> CallAnyInsteadOfUsingCountAsync( Document document, BinaryExpressionSyntax binaryExpression, CancellationToken cancellationToken) { BinaryExpressionInfo binaryExpressionInfo = SyntaxInfo.BinaryExpressionInfo(binaryExpression); if (binaryExpressionInfo.Left is not MemberAccessExpressionSyntax memberAccessExpression) { memberAccessExpression = (MemberAccessExpressionSyntax)binaryExpressionInfo.Right; } SimpleNameSyntax name = memberAccessExpression.Name; ExpressionSyntax newExpression = SimpleMemberInvocationExpression( memberAccessExpression.Expression, IdentifierName("Any").WithLeadingTrivia(name.GetLeadingTrivia()), ArgumentList().WithTrailingTrivia(name.GetTrailingTrivia())); if (binaryExpression.IsKind(SyntaxKind.EqualsExpression)) { newExpression = LogicalNotExpression(newExpression.WithoutLeadingTrivia().Parenthesize()); } newExpression = newExpression .WithTriviaFrom(binaryExpression) .WithFormatterAnnotation(); return(document.ReplaceNodeAsync(binaryExpression, newExpression, cancellationToken)); }
private static SimpleNameSyntax ChangeName(SimpleNameSyntax simpleName, string newName) { return(simpleName.WithIdentifier( Identifier( simpleName.GetLeadingTrivia(), newName, simpleName.GetTrailingTrivia()))); }
public override SyntaxNode VisitConditionalAccessExpression(ConditionalAccessExpressionSyntax node) { ExpressionSyntax whenNotNull = node.WhenNotNull; if (whenNotNull?.IsKind(SyntaxKind.MemberBindingExpression) == true) { var memberBinding = (MemberBindingExpressionSyntax)whenNotNull; SimpleNameSyntax name = memberBinding.Name; if (name != null && _textSpans.Contains(name.Span)) { _textSpans.Remove(node.Span); var expression = (ExpressionSyntax)base.Visit(node.Expression); InvocationExpressionSyntax invocation = InvocationExpression( memberBinding.WithName(IdentifierName(_methodName).WithLeadingTrivia(name.GetLeadingTrivia())), ArgumentList().WithTrailingTrivia(memberBinding.GetTrailingTrivia())); return(node .WithExpression(expression) .WithWhenNotNull(invocation)); } } return(base.VisitConditionalAccessExpression(node)); }