[Mono-bugs] [Bug 81380][Nor] New - Warning CS0183 incorrectly given for reference types
bugzilla-daemon at bugzilla.ximian.com
bugzilla-daemon at bugzilla.ximian.com
Sun Apr 15 10:59:34 EDT 2007
Please do not reply to this email- if you want to comment on the bug, go to the
URL shown below and enter your comments there.
Changed by chuck.esterbrook at gmail.com.
http://bugzilla.ximian.com/show_bug.cgi?id=81380
--- shadow/81380 2007-04-15 10:59:34.000000000 -0400
+++ shadow/81380.tmp.25356 2007-04-15 10:59:34.000000000 -0400
@@ -0,0 +1,71 @@
+Bug#: 81380
+Product: Mono: Compilers
+Version: 1.2
+OS: All
+OS Details:
+Status: NEW
+Resolution:
+Severity:
+Priority: Normal
+Component: C#
+AssignedTo: rharinath at novell.com
+ReportedBy: Chuck.Esterbrook at gmail.com
+QAContact: mono-bugs at ximian.com
+TargetMilestone: ---
+URL:
+Cc:
+Summary: Warning CS0183 incorrectly given for reference types
+
+Description of Problem:
+
+Re: Warning CS0183: The given expression is always of the provided (`IFoo') type
+
+This warning is not valid for reference types since the boolean expression may evaluate to true or
+false at runtime (null would give false). CS0183 should only be generated for value types because
+that's the only situation where the evaluation of the "is" test will not vary.
+
+Steps to reproduce the problem:
+
+// test.cs
+using System;
+interface IFoo {
+}
+class Bar {
+}
+class Program {
+ public static void Main() {
+ IFoo foo = null;
+ if (foo is IFoo)
+ Console.WriteLine("got an IFoo"); // never prints
+ Bar bar = null;
+ if (bar is Bar)
+ Console.WriteLine("got a bar"); // never prints
+ }
+}
+// end of test.cs
+
+Actual Results:
+
+$ gmcs test.cs
+test.cs(15,11): warning CS0183: The given expression is always of the provided (`IFoo') type
+test.cs(18,11): warning CS0183: The given expression is always of the provided (`Bar') type
+Compilation succeeded - 2 warning(s)
+$ mono test.exe
+(no output)
+
+Expected Results:
+
+$ gmcs test.cs
+$ mono test.exe
+(no output)
+
+How often does this happen?
+
+Always.
+
+Additional Information:
+
+"if (x is Foo)" can evaluate to false if "x" is null. Or it might evaluate to true.
+This is true even when the compile-time type of "x" is "Foo".
+
+See also: http://msdn2.microsoft.com/en-us/library/sb7782xb(vs.80).aspx
More information about the mono-bugs
mailing list