@@ -49,18 +49,20 @@ public async Task<ExpressionSyntax> ConvertNothingComparisonOrNullAsync(VBSyntax
4949 if ( ! ( exprNode is VBSyntax . BinaryExpressionSyntax node ) || ! node . IsKind ( VBasic . SyntaxKind . IsExpression , VBasic . SyntaxKind . EqualsExpression , VBasic . SyntaxKind . IsNotExpression , VBasic . SyntaxKind . NotEqualsExpression ) ) {
5050 return null ;
5151 }
52- ExpressionSyntax otherArgument ;
52+
53+ VBSyntax . ExpressionSyntax vbOtherArg ;
5354 if ( node . Left . IsKind ( VBasic . SyntaxKind . NothingLiteralExpression ) ) {
54- otherArgument = ( ExpressionSyntax ) await ConvertIsOrIsNotExpressionArgAsync ( node . Right ) ;
55+ vbOtherArg = node . Right ;
5556 } else if ( node . Right . IsKind ( VBasic . SyntaxKind . NothingLiteralExpression ) ) {
56- otherArgument = ( ExpressionSyntax ) await ConvertIsOrIsNotExpressionArgAsync ( node . Left ) ;
57+ vbOtherArg = node . Left ;
5758 } else {
5859 return null ;
5960 }
60-
61- var isReference = node . IsKind ( VBasic . SyntaxKind . IsExpression , VBasic . SyntaxKind . IsNotExpression ) ;
61+ var csOtherArg = ( ExpressionSyntax ) await ConvertIsOrIsNotExpressionArgAsync ( vbOtherArg ) ;
62+ var couldHaveOverloadedOperators = _semanticModel . GetTypeInfo ( vbOtherArg ) . Type . SpecialType == SpecialType . None ;
63+ var isReferenceComparison = node . IsKind ( VBasic . SyntaxKind . IsExpression , VBasic . SyntaxKind . IsNotExpression ) ;
6264 var notted = node . IsKind ( VBasic . SyntaxKind . IsNotExpression , VBasic . SyntaxKind . NotEqualsExpression ) || negateExpression ;
63- return notted ? CommonConversions . NotNothingComparison ( otherArgument , isReference ) : CommonConversions . NothingComparison ( otherArgument , isReference ) ;
65+ return notted ? CommonConversions . NotNothingComparison ( csOtherArg , isReferenceComparison ) : CommonConversions . NothingComparison ( csOtherArg , isReferenceComparison , couldHaveOverloadedOperators ) ;
6466 }
6567
6668 private async Task < CSharpSyntaxNode > ConvertIsOrIsNotExpressionArgAsync ( VBSyntax . ExpressionSyntax binaryExpressionArg )
0 commit comments