Wrong compiler warning when comparing a struct type (not simple type) to null - by JeppeSN1

Status : 

  Fixed<br /><br />
		This item has been fixed in the current or upcoming version of this product.<br /><br />
		A more detailed explanation for the resolution of this particular item may have been provided in the comments section.


1
0
Sign in
to vote
ID 768940 Comments
Status Closed Workarounds
Type Bug Repros 0
Opened 10/28/2012 1:21:25 AM
Access Restriction Public

Description

When a struct overloads the > (greater then) operator (user-defined operator), then comparing a value of the struct to null using the "lifted" > operator produces a wrong warning (warning message is all wrong).

Less importantly, when the struct overloads the == (equality) operator, no warning is produced when comparing a value to ==.

See also http://stackoverflow.com/q/13046115/1336654 
Sign in to post a comment.
Posted by Microsoft on 2/14/2013 at 2:56 AM
Hi Jeppe,

I'm Anthony. I work on a future version of the C# compiler we're developing as part of the "Roslyn" project. We have not announced any schedule for release of "Roslyn" however I will say that this issue has been fixed in this version of the C# compiler. The code in the linked StackOverflow post now produces:

warning CS0464: Comparing with null of type 'System.DateTime?' always produces 'false'

We also now report a similar warning whenever a non-nullable value type is compared to 'null' using == or !=. You'd be surprised how many people check to see if CancellationTokens are null when writing asynchronous methods now not realizing that CancellationToken is a struct and hence will never be null - a lot of people. You can actually observe this a little if you go to http://msdn.com/roslyn and download the latest "Roslyn" CTP. If you use the compiler APIs to create a C# compilation you'll see this warning is now reported.


Regards,

-Anthony D. Green, Program Manager, Visual Basic & C# Languages Team
Posted by Microsoft on 10/28/2012 at 7:00 PM
Thanks for your feedback.

We are rerouting this issue to the appropriate group within the Microsoft Visual Studio Connect Support Team for triage and resolution. These specialized experts will follow-up with your issue.
Posted by Microsoft on 10/28/2012 at 1:52 AM
Thank you for your feedback, we are currently reviewing the issue you have submitted. If this issue is urgent, please contact support directly(http://support.microsoft.com)