@@ -27,8 +27,9 @@ public override async Task RegisterCodeFixesAsync(CodeFixContext context)
2727 var root = await context . Document . GetSyntaxRootAsync ( ) ;
2828 var diagnostic = context . Diagnostics . First ( ) ;
2929
30- var syntaxNode = root ! . FindNode ( context . Span ) as InvocationExpressionSyntax ;
31- if ( syntaxNode ? . Expression is not MemberAccessExpressionSyntax memberAccessExpressionSyntax ) return ;
30+ var memberAccessExpressionSyntax = root ! . FindNode ( context . Span ) as MemberAccessExpressionSyntax ;
31+ if ( memberAccessExpressionSyntax == null )
32+ return ;
3233
3334 var title = Resources . ReplaceWithIsEmpty ;
3435
@@ -45,15 +46,29 @@ public override async Task RegisterCodeFixesAsync(CodeFixContext context)
4546 private static async Task < Document > FixAsync ( Document document , MemberAccessExpressionSyntax originalExpression ,
4647 CancellationToken cancellationToken )
4748 {
48- var newExpression = PrefixUnaryExpression ( SyntaxKind . LogicalNotExpression , MemberAccessExpression (
49- SyntaxKind . SimpleMemberAccessExpression ,
50- originalExpression . Expression ,
51- IdentifierName ( nameof ( ConcurrentDictionary < object , object > . IsEmpty ) ) )
52- )
53- . NormalizeWhitespace ( ) ;
49+ ExpressionSyntax newExpression = MemberAccessExpression (
50+ SyntaxKind . SimpleMemberAccessExpression ,
51+ originalExpression . Expression ,
52+ IdentifierName ( nameof ( ConcurrentDictionary < object , object > . IsEmpty ) ) ) ;
53+
54+ var expressionParent = originalExpression . Parent ;
55+
56+ if ( expressionParent ? . Parent is PrefixUnaryExpressionSyntax
57+ {
58+ RawKind : ( int ) SyntaxKind . LogicalNotExpression
59+ } )
60+ {
61+ expressionParent = expressionParent . Parent ;
62+ }
63+ else
64+ {
65+ newExpression = PrefixUnaryExpression ( SyntaxKind . LogicalNotExpression , newExpression ) ;
66+ }
67+
68+ newExpression . NormalizeWhitespace ( ) ;
5469
5570 var oldRoot = await document . GetSyntaxRootAsync ( cancellationToken ) ;
56- var newRoot = oldRoot ! . ReplaceNode ( originalExpression . Parent , newExpression ) ;
71+ var newRoot = oldRoot ! . ReplaceNode ( expressionParent , newExpression ) ;
5772
5873 return document . WithSyntaxRoot ( newRoot ) ;
5974 }
0 commit comments