http://bugzilla.novell.com/show_bug.cgi?id=627488
http://bugzilla.novell.com/show_bug.cgi?id=627488#c0 Summary: Generic constraints not (fully?) inherited on virtual generic method override Classification: Mono Product: Mono: Compilers Version: SVN Platform: x86-64 OS/Version: All Status: NEW Severity: Normal Priority: P5 - None Component: C# AssignedTo: [email protected] ReportedBy: [email protected] QAContact: [email protected] Found By: --- Blocker: --- User-Agent: Mozilla/5.0 (X11; U; FreeBSD amd64; en-US; rv:1.9.1.11) Gecko/20100722 Firefox/3.5.11 When overriding a virtual, generic method with generic constraints which itself has arguments which are generic and use the method's type parameter(s), mcs/gmcs/dmcs report error CS0314. The problem occurs only if the method argument type requires constraints to be present (i.e. itself has constraints which the method declaration must match), and if the constraint is a derivation constraint of a generic interface, such as T : IEquatable<T> or T : IComparable<T>. Other constraints do not cause the problem. The virtual method in the base class compiles without problems in the absence of an override. Test case: ------------------------------- using System; public class GenericType<U> where U : IEquatable<U> { public U u; } public class Base { public virtual T Test<T>(GenericType<T> gt) where T : IEquatable<T> { return gt.u; } } public class Override: Base { public override T Test<T>(GenericType<T> gt) // This is where the problem is { throw new NotImplementedException(); } } ------------------------------- In this case, the error received is: Test.cs(18,35): error CS0314: The type `T' cannot be used as type parameter `U' in the generic type or method `GenericType<U>'. There is no boxing or type parameter conversion from `T' to `System.IEquatable<T>' Test.cs(3,14): (Location of the symbol related to previous error) When the constraint is added to the override, error CS0460 "Cannot specify constraints for overrides and explicit interface implementation methods" occurs, as expected. Reproducible: Always Steps to Reproduce: Compile test case given above for any target framework version that supports generics. Actual Results: Compilation fails with error CS0314 as described above. Expected Results: Should compile without errors. Note: I got this error running mono SVN-r160737 on FreeBSD, but I presume this problem to be OS-indepenent. -- Configure bugmail: http://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. _______________________________________________ mono-bugs maillist - [email protected] http://lists.ximian.com/mailman/listinfo/mono-bugs
