Skip to content

Commit

Permalink
Introduce Comparators{Min,Max} Refaster templates (#270)
Browse files Browse the repository at this point in the history
  • Loading branch information
nadirbelarouci committed Sep 29, 2022
1 parent 8c0041a commit aa5ad4d
Show file tree
Hide file tree
Showing 3 changed files with 52 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.function.BinaryOperator;
import java.util.function.Function;
import java.util.function.ToDoubleFunction;
import java.util.function.ToIntFunction;
Expand Down Expand Up @@ -259,4 +260,36 @@ T after(T value1, T value2, Comparator<T> cmp) {
return Comparators.max(value1, value2, cmp);
}
}

/**
* Prefer a method reference to {@link Comparators#min(Comparable, Comparable)} over calling
* {@link BinaryOperator#minBy(Comparator)} with {@link Comparator#naturalOrder()}.
*/
static final class ComparatorsMin<T extends Comparable<? super T>> {
@BeforeTemplate
BinaryOperator<T> before() {
return BinaryOperator.minBy(naturalOrder());
}

@AfterTemplate
BinaryOperator<T> after() {
return Comparators::min;
}
}

/**
* Prefer a method reference to {@link Comparators#max(Comparable, Comparable)} over calling
* {@link BinaryOperator#minBy(Comparator)} with {@link Comparator#naturalOrder()}.
*/
static final class ComparatorsMax<T extends Comparable<? super T>> {
@BeforeTemplate
BinaryOperator<T> before() {
return BinaryOperator.maxBy(naturalOrder());
}

@AfterTemplate
BinaryOperator<T> after() {
return Comparators::max;
}
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package tech.picnic.errorprone.refastertemplates;

import static java.util.Comparator.naturalOrder;
import static java.util.Comparator.reverseOrder;
import static java.util.function.Function.identity;

Expand All @@ -8,6 +9,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.function.BinaryOperator;
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;

final class ComparatorTemplatesTest implements RefasterTemplateTestCase {
Expand Down Expand Up @@ -102,4 +104,12 @@ ImmutableSet<Object> testMaxOfPairCustomOrder() {
Collections.max(ImmutableList.of(new Object(), new Object()), (a, b) -> 0),
Collections.max(ImmutableSet.of(new Object(), new Object()), (a, b) -> 1));
}

BinaryOperator<String> testComparatorsMin() {
return BinaryOperator.minBy(naturalOrder());
}

BinaryOperator<String> testComparatorsMax() {
return BinaryOperator.maxBy(naturalOrder());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.function.BinaryOperator;
import tech.picnic.errorprone.refaster.test.RefasterTemplateTestCase;

final class ComparatorTemplatesTest implements RefasterTemplateTestCase {
Expand Down Expand Up @@ -90,4 +91,12 @@ ImmutableSet<Object> testMaxOfPairCustomOrder() {
Comparators.max(new Object(), new Object(), (a, b) -> 0),
Comparators.max(new Object(), new Object(), (a, b) -> 1));
}

BinaryOperator<String> testComparatorsMin() {
return Comparators::min;
}

BinaryOperator<String> testComparatorsMax() {
return Comparators::max;
}
}

0 comments on commit aa5ad4d

Please sign in to comment.