You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by em...@apache.org on 2022/09/03 02:22:18 UTC

[groovy] 01/01: GROOVY-7992: DGM: `Comparator` for comparator parameters

This is an automated email from the ASF dual-hosted git repository.

emilles pushed a commit to branch GROOVY-7992
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit f52a893cad693820a75f044139ccc8ffe4778cd1
Author: Eric Milles <er...@thomsonreuters.com>
AuthorDate: Fri Sep 2 21:22:00 2022 -0500

    GROOVY-7992: DGM: `Comparator<? super T>` for comparator parameters
---
 .../groovy/runtime/DefaultGroovyMethods.java       | 54 +++++++++++-----------
 1 file changed, 27 insertions(+), 27 deletions(-)

diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
index 8af9eb325d..f1201d2748 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultGroovyMethods.java
@@ -1550,7 +1550,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return the modified Iterator
      * @since 1.5.5
      */
-    public static <T> Iterator<T> unique(Iterator<T> self, Comparator<T> comparator) {
+    public static <T> Iterator<T> unique(Iterator<T> self, Comparator<? super T> comparator) {
         return uniqueItems(new IteratorIterableAdapter<>(self), comparator).listIterator();
     }
 
@@ -1614,7 +1614,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #unique(java.util.Collection, boolean, java.util.Comparator)
      * @since 1.0
      */
-    public static <T> Collection<T> unique(Collection<T> self, Comparator<T> comparator) {
+    public static <T> Collection<T> unique(Collection<T> self, Comparator<? super T> comparator) {
         return unique(self, true, comparator) ;
     }
 
@@ -1665,7 +1665,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #unique(java.util.Collection, boolean, java.util.Comparator)
      * @since 2.4.0
      */
-    public static <T> List<T> unique(List<T> self, Comparator<T> comparator) {
+    public static <T> List<T> unique(List<T> self, Comparator<? super T> comparator) {
         return (List<T>) unique((Collection<T>) self, true, comparator);
     }
 
@@ -1716,7 +1716,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return self      the collection without duplicates
      * @since 1.8.1
      */
-    public static <T> Collection<T> unique(Collection<T> self, boolean mutate, Comparator<T> comparator) {
+    public static <T> Collection<T> unique(Collection<T> self, boolean mutate, Comparator<? super T> comparator) {
         List<T> answer = uniqueItems(self, comparator);
         if (mutate) {
             self.clear();
@@ -1725,7 +1725,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
         return mutate ? self : answer;
     }
 
-    private static <T> List<T> uniqueItems(Iterable<T> self, Comparator<T> comparator) {
+    private static <T> List<T> uniqueItems(Iterable<T> self, Comparator<? super T> comparator) {
         List<T> answer = new ArrayList<>();
         for (T t : self) {
             boolean duplicated = false;
@@ -1788,7 +1788,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return self      the List without duplicates
      * @since 2.4.0
      */
-    public static <T> List<T> unique(List<T> self, boolean mutate, Comparator<T> comparator) {
+    public static <T> List<T> unique(List<T> self, boolean mutate, Comparator<? super T> comparator) {
         return (List<T>) unique((Collection<T>) self, mutate, comparator);
     }
 
@@ -1828,9 +1828,9 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
         private boolean exhausted;
         private E next;
 
-        private ToUniqueIterator(Iterator<E> delegate, Comparator<E> comparator) {
+        private ToUniqueIterator(Iterator<E> delegate, Comparator<? super E> comparator) {
+            this.seen = new TreeSet<>(comparator);
             this.delegate = delegate;
-            seen = new TreeSet<>(comparator);
             advance();
         }
 
@@ -1875,7 +1875,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return an Iterator with no duplicate items
      * @since 2.4.0
      */
-    public static <T> Iterator<T> toUnique(Iterator<T> self, Comparator<T> comparator) {
+    public static <T> Iterator<T> toUnique(Iterator<T> self, Comparator<? super T> comparator) {
         return new ToUniqueIterator<>(self, comparator);
     }
 
@@ -1936,7 +1936,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return the Collection of non-duplicate items
      * @since 2.4.0
      */
-    public static <T> Collection<T> toUnique(Iterable<T> self, Comparator<T> comparator) {
+    public static <T> Collection<T> toUnique(Iterable<T> self, Comparator<? super T> comparator) {
         Collection<T> result = createSimilarCollection(self);
         addAll(result, toUnique(self.iterator(), comparator));
         return result;
@@ -1987,7 +1987,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return the List of non-duplicate items
      * @since 2.4.0
      */
-    public static <T> List<T> toUnique(List<T> self, Comparator<T> comparator) {
+    public static <T> List<T> toUnique(List<T> self, Comparator<? super T> comparator) {
         return (List<T>) toUnique((Iterable<T>) self, comparator);
     }
 
@@ -2130,7 +2130,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      *        If {@code null}, the Comparable natural ordering of the elements will be used.
      * @return the unique items from the array
      */
-    public static <T> T[] toUnique(T[] self, Comparator<T> comparator) {
+    public static <T> T[] toUnique(T[] self, Comparator<? super T> comparator) {
         Collection<T> items = toUnique(new ArrayIterable<>(self), comparator);
         return items.toArray(createSimilarArray(self, items.size()));
     }
@@ -7011,7 +7011,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #min(Iterator, java.util.Comparator)
      * @since 2.2.0
      */
-    public static <T> T min(Iterable<T> self, Comparator<T> comparator) {
+    public static <T> T min(Iterable<T> self, Comparator<? super T> comparator) {
         return min(self.iterator(), comparator);
     }
 
@@ -7023,7 +7023,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return the minimum value
      * @since 1.5.5
      */
-    public static <T> T min(Iterator<T> self, Comparator<T> comparator) {
+    public static <T> T min(Iterator<T> self, Comparator<? super T> comparator) {
         T answer = null;
         boolean first = true;
         while (self.hasNext()) {
@@ -7047,7 +7047,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #min(Iterator, java.util.Comparator)
      * @since 1.5.5
      */
-    public static <T> T min(T[] self, Comparator<T> comparator) {
+    public static <T> T min(T[] self, Comparator<? super T> comparator) {
         return min(new ArrayIterator<>(self), comparator);
     }
 
@@ -7452,7 +7452,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #max(Iterator, Comparator)
      * @since 2.2.0
      */
-    public static <T> T max(Iterable<T> self, Comparator<T> comparator) {
+    public static <T> T max(Iterable<T> self, Comparator<? super T> comparator) {
         return max(self.iterator(), comparator);
     }
 
@@ -7464,7 +7464,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return the maximum value
      * @since 1.5.5
      */
-    public static <T> T max(Iterator<T> self, Comparator<T> comparator) {
+    public static <T> T max(Iterator<T> self, Comparator<? super T> comparator) {
         T answer = null;
         while (self.hasNext()) {
             T value = self.next();
@@ -7484,7 +7484,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #max(Iterator, Comparator)
      * @since 1.5.5
      */
-    public static <T> T max(T[] self, Comparator<T> comparator) {
+    public static <T> T max(T[] self, Comparator<? super T> comparator) {
         return max(new ArrayIterator<>(self), comparator);
     }
 
@@ -9615,7 +9615,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return a sorted List
      * @since 2.4.0
      */
-    public static <T> List<T> toSorted(Iterable<T> self, Comparator<T> comparator) {
+    public static <T> List<T> toSorted(Iterable<T> self, Comparator<? super T> comparator) {
         List<T> list = toList(self);
         list.sort(comparator);
         return list;
@@ -9674,7 +9674,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return the sorted items as an Iterator
      * @since 2.4.0
      */
-    public static <T> Iterator<T> toSorted(Iterator<T> self, Comparator<T> comparator) {
+    public static <T> Iterator<T> toSorted(Iterator<T> self, Comparator<? super T> comparator) {
         return toSorted(toList(self), comparator).listIterator();
     }
 
@@ -9728,7 +9728,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return the sorted array
      * @since 2.4.0
      */
-    public static <T> T[] toSorted(T[] self, Comparator<T> comparator) {
+    public static <T> T[] toSorted(T[] self, Comparator<? super T> comparator) {
         T[] answer = self.clone();
         Arrays.sort(answer, comparator);
         return answer;
@@ -12889,7 +12889,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return a Collection as an intersection of both collections
      * @since 2.5.0
      */
-    public static <T> Collection<T> intersect(Collection<T> left, Collection<T> right, Comparator<T> comparator) {
+    public static <T> Collection<T> intersect(Collection<T> left, Collection<T> right, Comparator<? super T> comparator) {
         if (left.isEmpty() || right.isEmpty())
             return createSimilarCollection(left, 0);
 
@@ -12939,7 +12939,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return a Collection as an intersection of both iterables
      * @since 2.5.0
      */
-    public static <T> Collection<T> intersect(Iterable<T> left, Iterable<T> right, Comparator<T> comparator) {
+    public static <T> Collection<T> intersect(Iterable<T> left, Iterable<T> right, Comparator<? super T> comparator) {
         return intersect(asCollection(left), asCollection(right), comparator);
     }
 
@@ -13005,7 +13005,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return a List as an intersection of a List and an Iterable
      * @since 2.5.0
      */
-    public static <T> List<T> intersect(List<T> left, Iterable<T> right, Comparator<T> comparator) {
+    public static <T> List<T> intersect(List<T> left, Iterable<T> right, Comparator<? super T> comparator) {
         return (List<T>) intersect((Collection<T>) left, asCollection(right), comparator);
     }
 
@@ -13041,7 +13041,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return a Set as an intersection of a Set and an Iterable
      * @since 2.5.0
      */
-    public static <T> Set<T> intersect(Set<T> left, Iterable<T> right, Comparator<T> comparator) {
+    public static <T> Set<T> intersect(Set<T> left, Iterable<T> right, Comparator<? super T> comparator) {
         return (Set<T>) intersect((Collection<T>) left, asCollection(right), comparator);
     }
 
@@ -13077,7 +13077,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @return a Set as an intersection of a SortedSet and an Iterable
      * @since 2.5.0
      */
-    public static <T> SortedSet<T> intersect(SortedSet<T> left, Iterable<T> right, Comparator<T> comparator) {
+    public static <T> SortedSet<T> intersect(SortedSet<T> left, Iterable<T> right, Comparator<? super T> comparator) {
         return (SortedSet<T>) intersect((Collection<T>) left, asCollection(right), comparator);
     }
 
@@ -13675,7 +13675,7 @@ public class DefaultGroovyMethods extends DefaultGroovyMethodsSupport {
      * @since 4.0.0
      */
     @SuppressWarnings("unchecked")
-    public static <T> Collection<T> minus(Iterable<T> self, Iterable<?> removeMe, Comparator<T> comparator) {
+    public static <T> Collection<T> minus(Iterable<T> self, Iterable<?> removeMe, Comparator<? super T> comparator) {
         Collection<T> self1 = asCollection(self);
         Collection<?> removeMe1 = asCollection(removeMe);
         Collection<T> ansCollection = createSimilarCollection(self1);