http://bugzilla.novell.com/show_bug.cgi?id=619555

http://bugzilla.novell.com/show_bug.cgi?id=619555#c0


           Summary: Operator error
    Classification: Mono
           Product: Mono: Runtime
           Version: SVN
          Platform: 64bit
        OS/Version: RHEL 5
            Status: NEW
          Severity: Major
          Priority: P5 - None
         Component: misc
        AssignedTo: mono-bugs@lists.ximian.com
        ReportedBy: srfcan...@hotmail.com
         QAContact: mono-bugs@lists.ximian.com
          Found By: ---
           Blocker: ---


User-Agent:       Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.2; WOW64;
Trident/4.0; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; MS-RTC LM 8)

the error seems to have appeared in the last couple days checkins. The given
test class doesnt compile on mono but does on windows and used to compile on
mono a few days ago.

1. Test Class:
using System;
using System.Collections.Generic;

namespace Test
{
   internal struct TestClass4<T>  : IEquatable<TestClass4<T>>, IEquatable<T>,
IEqualityComparer<TestClass4<T>> where T : class
   {
      public bool Equals(T obj)
      {
         return true;
      }

      public bool Equals(TestClass4<T> entry)
      {
         return true;
      }

      public bool Equals(TestClass4<T> x, TestClass4<T> y)
      {
         return x.Equals(y);
      }

      public int GetHashCode(TestClass4<T> obj)
      {
         return obj.GetHashCode();
      }

      public override int GetHashCode()
      {
         return 1;
      }

      public override bool Equals(object obj)
      {
         return false;
      }

      public static bool operator ==(TestClass4<T> entry1, TestClass4<T>
entry2)
      {
         return entry1.Equals(entry2);
      }

      public static bool operator ==(T entry1, TestClass4<T> entry2)
      {
         return entry2.Equals(entry1);
      }

      public static bool operator ==(TestClass4<T> entry1, T entry2)
      {
         return entry1.Equals(entry2);
      }

      public static bool operator ==(object entry1, TestClass4<T> entry2)
      {
         return entry2.Equals(entry1);
      }

      public static bool operator ==(TestClass4<T> entry1, object entry2)
      {
         return entry1.Equals(entry2);
      }

      public static bool operator !=(TestClass4<T> entry1, TestClass4<T>
entry2)
      {
         return !(entry1 == entry2);
      }

      public static bool operator !=(T entry1, TestClass4<T> entry2)
      {
         return !(entry1 == entry2);
      }

      public static bool operator !=(TestClass4<T> entry1, T entry2)
      {
         return !(entry1 == entry2);
      }

      public static bool operator !=(object entry1, TestClass4<T> entry2)
      {
         return !(entry1 == entry2);
      }

      public static bool operator !=(TestClass4<T> entry1, object entry2)
      {
         return !(entry1 == entry2);
      }
   }
}


2. compile it:
gmcs /targe:library test4.cs

3. generates this error on mono:
test4.cs(65,26): error CS0019: Operator `==' cannot be applied to operands of
type `Test.TestClass4<T>' and `Test.TestClass4<T>'
test4.cs(70,26): error CS0019: Operator `==' cannot be applied to operands of
type `T' and `Test.TestClass4<T>'
test4.cs(75,26): error CS0019: Operator `==' cannot be applied to operands of
type `Test.TestClass4<T>' and `T'
test4.cs(80,26): error CS0019: Operator `==' cannot be applied to operands of
type `object' and `Test.TestClass4<T>'
test4.cs(85,26): error CS0019: Operator `==' cannot be applied to operands of
type `Test.TestClass4<T>' and `object'
Compilation failed: 5 error(s), 0 warnings


Reproducible: Always

Steps to Reproduce:
1.
2.
3.

-- 
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  -  mono-bugs@lists.ximian.com
http://lists.ximian.com/mailman/listinfo/mono-bugs

Reply via email to