Deprecate 'comparator { ... }' in favor of Comparator SAM-constructor. Provide SAM-like constructor for JS.

This commit is contained in:
Ilya Gorbunov
2016-01-17 17:26:38 +03:00
parent 67ef790abc
commit 5bbce7a1de
5 changed files with 9 additions and 20 deletions
+4
View File
@@ -11,6 +11,10 @@ public interface Comparator<T> {
public fun compare(obj1: T, obj2: T): Int;
}
public inline fun <T> Comparator(crossinline comparison: (T, T) -> Int): Comparator<T> = object : Comparator<T> {
override fun compare(obj1: T, obj2: T): Int = comparison(obj1, obj2)
}
@library
public abstract class AbstractCollection<E>() : MutableCollection<E> {
override fun isEmpty(): Boolean = noImpl
@@ -182,15 +182,6 @@ inline public fun <T, K> Comparator<T>.thenByDescending(comparator: Comparator<i
}
/**
* Creates a comparator using the function to calculate a result of comparison.
*/
inline public fun <T> comparator(crossinline comparison: (T, T) -> Int): Comparator<T> {
return object : Comparator<T> {
public override fun compare(a: T, b: T): Int = comparison(a, b)
}
}
/**
* Creates a comparator using the primary comparator and function to calculate a result of comparison.
*/
@@ -194,16 +194,11 @@ inline public fun <T, K> Comparator<T>.thenByDescending(comparator: Comparator<i
}
}
/**
* Creates a comparator using the function to calculate a result of comparison.
*/
@Deprecated("Use comparator function from kotlin.comparisons package.", ReplaceWith("comparator(comparison)", "kotlin.comparisons.comparator"))
inline public fun <T> comparator(crossinline comparison: (T, T) -> Int): Comparator<T> {
return object : Comparator<T> {
public override fun compare(a: T, b: T): Int = comparison(a, b)
}
}
@Deprecated("Use Comparator SAM-constructor instead.", ReplaceWith("Comparator(comparison)", "java.util.Comparator"))
inline public fun <T> comparator(crossinline comparison: (T, T) -> Int) = Comparator<T> { a, b -> comparison(a, b) }
/**
* Creates a comparator using the primary comparator and function to calculate a result of comparison.
+1 -1
View File
@@ -53,7 +53,7 @@ class OrderingTest {
@Test
fun sortComparatorThenComparator() {
val comparator = comparator<Item> { a, b -> a.name.compareTo(b.name) }.thenComparator { a, b -> a.rating.compareTo(b.rating) }
val comparator = Comparator<Item> { a, b -> a.name.compareTo(b.name) }.thenComparator { a, b -> a.rating.compareTo(b.rating) }
val diff = comparator.compare(v1, v2)
assertTrue(diff > 0)
@@ -1,7 +1,6 @@
package test.collections
import java.util.Collections
import java.util.ArrayList
import java.util.*
import kotlin.test.*
import org.junit.Test as test
@@ -13,7 +12,7 @@ class JavautilCollectionsTest {
val TEST_LIST = arrayOf(2, 0, 9, 7, 1).toList()
val SORTED_TEST_LIST = arrayOf(0, 1, 2, 7, 9).toList()
val MAX_ELEMENT = 9
val COMPARATOR = comparator { x: Int, y: Int -> if (x > y) 1 else if (x < y) -1 else 0 }
val COMPARATOR = Comparator { x: Int, y: Int -> if (x > y) 1 else if (x < y) -1 else 0 }
@test fun maxWithComparator() {
assertEquals(MAX_ELEMENT, Collections.max(TEST_LIST, COMPARATOR))