[Mono-bugs] [Bug 415375] New: CS0019 erroneously reported for equality comparison between object type value and generic type value with "class" reference constraint
bugzilla_noreply at novell.com
bugzilla_noreply at novell.com
Thu Aug 7 05:31:23 EDT 2008
https://bugzilla.novell.com/show_bug.cgi?id=415375
Summary: CS0019 erroneously reported for equality comparison
between object type value and generic type value with
"class" reference constraint
Product: Mono: Compilers
Version: 2.0
Platform: x86-64
OS/Version: openSUSE 10.3
Status: NEW
Severity: Normal
Priority: P5 - None
Component: C#
AssignedTo: mono-bugs at lists.ximian.com
ReportedBy: other+novell at bluecherry.net
QAContact: mono-bugs at lists.ximian.com
Found By: ---
Given the following code:
public class Inner<T> where T : class {
public static void Compare(object obj, T value) {
if (obj != value) { }
}
}
Actual result:
error CS0019: Operator `!=' cannot be applied to operands of type `object' and
`T'
Expected result:
Compiles successfully
Supporting evidence:
csc.exe compiles with no error
(ECMA reference pulled from another bug)
ECMA 334 section 14.9.6 (Reference type equality operators)
"Otherwise, if either A or B is a type parameter that is not known to be a
reference type (§25.7), then no reference type equality operator is
applicable."
This appears to be applicable, and since T has the class constraint, it is
known to be a reference type.
Also, this doesn't even work which seems even stranger since both the arguments
are theoretically the same:
public class ThisClass {}
public class Inner<T> where T : ThisClass {
public static void Compare(ThisClass obj, T value) {
if (obj != value) { }
}
}
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the QA contact for the bug.
You are the assignee for the bug.
More information about the mono-bugs
mailing list