Index: lib/src/equality.dart |
diff --git a/lib/src/equality.dart b/lib/src/equality.dart |
index 5a0d074bd8d70b630187ecf76cd2ce13d705683e..09f10a644bdf2b8cc2e8f1da0b57f50d786a7004 100644 |
--- a/lib/src/equality.dart |
+++ b/lib/src/equality.dart |
@@ -8,7 +8,7 @@ const int _HASH_MASK = 0x7fffffff; |
/// A generic equality relation on objects. |
abstract class Equality<E> { |
- const factory Equality() = DefaultEquality; |
+ const factory Equality() = DefaultEquality<E>; |
/// Compare two elements for being equal. |
/// |
@@ -32,18 +32,18 @@ abstract class Equality<E> { |
/// |
/// This equality uses the objects' own [Object.==] and [Object.hashCode] for |
/// the equality. |
-class DefaultEquality implements Equality { |
+class DefaultEquality<E> implements Equality<E> { |
const DefaultEquality(); |
- bool equals(Object e1, Object e2) => e1 == e2; |
- int hash(Object e) => e.hashCode; |
+ bool equals(E e1, E e2) => e1 == e2; |
+ int hash(E e) => e.hashCode; |
bool isValidKey(Object o) => true; |
} |
/// Equality of objects that compares only the identity of the objects. |
-class IdentityEquality implements Equality { |
+class IdentityEquality<E> implements Equality<E> { |
const IdentityEquality(); |
- bool equals(Object e1, Object e2) => identical(e1, e2); |
- int hash(Object e) => identityHashCode(e); |
+ bool equals(E e1, E e2) => identical(e1, e2); |
+ int hash(E e) => identityHashCode(e); |
bool isValidKey(Object o) => true; |
} |
@@ -59,8 +59,8 @@ class IterableEquality<E> implements Equality<Iterable<E>> { |
bool equals(Iterable<E> elements1, Iterable<E> elements2) { |
if (identical(elements1, elements2)) return true; |
if (elements1 == null || elements2 == null) return false; |
- Iterator it1 = elements1.iterator; |
- Iterator it2 = elements2.iterator; |
+ var it1 = elements1.iterator; |
+ var it2 = elements2.iterator; |
while (true) { |
bool hasNext = it1.moveNext(); |
if (hasNext != it2.moveNext()) return false; |