IEqualityComparer<T> is not covariant before .NET 4

This commit is contained in:
Sam Harwell 2013-02-27 13:47:05 -06:00
parent 104de1a1c5
commit 1fe11155d6
1 changed files with 7 additions and 6 deletions

View File

@ -1014,16 +1014,17 @@ namespace Antlr4.Runtime.Test
where TKey : class
{
public IdentityHashMap()
: base(IdentityEqualityComparer.Default)
: base(IdentityEqualityComparer<TKey>.Default)
{
}
}
private class IdentityEqualityComparer : IEqualityComparer<object>
private class IdentityEqualityComparer<T> : IEqualityComparer<T>
where T : class
{
private static readonly IdentityEqualityComparer _default = new IdentityEqualityComparer();
private static readonly IdentityEqualityComparer<T> _default = new IdentityEqualityComparer<T>();
public static IdentityEqualityComparer Default
public static IdentityEqualityComparer<T> Default
{
get
{
@ -1031,12 +1032,12 @@ namespace Antlr4.Runtime.Test
}
}
public new bool Equals(object x, object y)
public bool Equals(T x, T y)
{
return x == y;
}
public int GetHashCode(object obj)
public int GetHashCode(T obj)
{
return RuntimeHelpers.GetHashCode(obj);
}