Skip to content

Commit

Permalink
Merge pull request #1496 from wjglerum/natural-ordering-comparable-hi…
Browse files Browse the repository at this point in the history
…erarchy

Allows NaturalOrdering for Comparable type hierarchies
  • Loading branch information
elucash committed Feb 9, 2024
2 parents a490b41 + 5c0fbfe commit 021ce55
Show file tree
Hide file tree
Showing 3 changed files with 21 additions and 2 deletions.
17 changes: 17 additions & 0 deletions value-fixture/src/org/immutables/fixture/jdkonly/JdkColl.java
Expand Up @@ -36,4 +36,21 @@ public interface JdkColl {

@Value.ReverseOrder
NavigableSet<Integer> navs();

@Value.NaturalOrder
SortedSet<Elem> elems();

@Value.Immutable
interface Elem extends ComparableElem<Integer> {
}

interface ComparableElem<T extends Comparable<T>> extends Comparable<ComparableElem<T>> {

T getValue();

@Override
default int compareTo(ComparableElem<T> other) {
return getValue().compareTo(other.getValue());
}
}
}
Expand Up @@ -46,12 +46,14 @@ public void collections() {
.addOrds(4, 6, 5)
.addAllOrds(Arrays.asList(8, 7, 9))
.addPols(RetentionPolicy.RUNTIME, RetentionPolicy.RUNTIME)
.addElems(ImmutableElem.builder().value(1).build(), ImmutableElem.builder().value(2).build())
.build();

check(coll.ints()).hasContentInAnyOrder(1, 2, 3, 4, 5, 6);
check(coll.navs()).hasContentInAnyOrder(3, 2, 1);
check(coll.ords()).hasContentInAnyOrder(4, 5, 6, 7, 8, 9);
check(coll.pols()).hasContentInAnyOrder(RetentionPolicy.RUNTIME);
check(coll.elems()).hasContentInAnyOrder(ImmutableElem.builder().value(1).build(), ImmutableElem.builder().value(2).build());
}

@Test
Expand Down
Expand Up @@ -4357,7 +4357,7 @@ private static <T extends Enum<T>> java.util.Set<T> createUnmodifiableEnumSet(It
[/if]
[/output.trim][/let]

private static <T extends Comparable<T>> java.util.[unmodifiableSortedSetInterface]<T> createUnmodifiableSortedSet(boolean reverse, java.util.List<T> list) {
private static <T extends Comparable<? super T>> java.util.[unmodifiableSortedSetInterface]<T> createUnmodifiableSortedSet(boolean reverse, java.util.List<T> list) {
java.util.TreeSet<T> set = reverse
? new java.util.TreeSet<T>(java.util.Collections.<T>reverseOrder())
: new java.util.TreeSet<T>();
Expand Down Expand Up @@ -4433,7 +4433,7 @@ private static <K extends Enum<K>, V> java.util.Map<K, V> createUnmodifiableEnum
[/if]
[/output.trim][/let]

private static <K extends Comparable<K>, V> java.util.[unmodifiableSortedMapInterface]<K, V> createUnmodifiableSortedMap(boolean reverse, boolean checkNulls, boolean skipNulls, java.util.Map<? extends K, ? extends V> map) {
private static <K extends Comparable<? super K>, V> java.util.[unmodifiableSortedMapInterface]<K, V> createUnmodifiableSortedMap(boolean reverse, boolean checkNulls, boolean skipNulls, java.util.Map<? extends K, ? extends V> map) {
java.util.TreeMap<K, V> sortedMap = reverse
? new java.util.TreeMap<K, V>(java.util.Collections.<K>reverseOrder())
: new java.util.TreeMap<K, V>();
Expand Down

0 comments on commit 021ce55

Please sign in to comment.