Relax upper bound of T for minBy and maxBy to be nullable.

Swap type parameters of minBy and maxBy.
#KT-10099 Fixed
This commit is contained in:
Ilya Gorbunov
2015-11-30 18:19:25 +03:00
parent 58e93d5e1b
commit 33b366b9b9
4 changed files with 8 additions and 8 deletions
+2 -2
View File
@@ -8359,7 +8359,7 @@ public fun ShortArray.max(): Short? {
/**
* Returns the first element yielding the largest value of the given function or `null` if there are no elements.
*/
public inline fun <R : Comparable<R>, T : Any> Array<out T>.maxBy(selector: (T) -> R): T? {
public inline fun <T, R : Comparable<R>> Array<out T>.maxBy(selector: (T) -> R): T? {
if (isEmpty()) return null
var maxElem = this[0]
var maxValue = selector(maxElem)
@@ -8625,7 +8625,7 @@ public fun ShortArray.min(): Short? {
/**
* Returns the first element yielding the smallest value of the given function or `null` if there are no elements.
*/
public inline fun <R : Comparable<R>, T : Any> Array<out T>.minBy(selector: (T) -> R): T? {
public inline fun <T, R : Comparable<R>> Array<out T>.minBy(selector: (T) -> R): T? {
if (isEmpty()) return null
var minElem = this[0]
var minValue = selector(minElem)
@@ -1397,7 +1397,7 @@ public fun <T : Comparable<T>> Iterable<T>.max(): T? {
/**
* Returns the first element yielding the largest value of the given function or `null` if there are no elements.
*/
public inline fun <R : Comparable<R>, T : Any> Iterable<T>.maxBy(selector: (T) -> R): T? {
public inline fun <T, R : Comparable<R>> Iterable<T>.maxBy(selector: (T) -> R): T? {
val iterator = iterator()
if (!iterator.hasNext()) return null
var maxElem = iterator.next()
@@ -1430,7 +1430,7 @@ public fun <T : Comparable<T>> Iterable<T>.min(): T? {
/**
* Returns the first element yielding the smallest value of the given function or `null` if there are no elements.
*/
public inline fun <R : Comparable<R>, T : Any> Iterable<T>.minBy(selector: (T) -> R): T? {
public inline fun <T, R : Comparable<R>> Iterable<T>.minBy(selector: (T) -> R): T? {
val iterator = iterator()
if (!iterator.hasNext()) return null
var minElem = iterator.next()
+2 -2
View File
@@ -799,7 +799,7 @@ public fun <T : Comparable<T>> Sequence<T>.max(): T? {
/**
* Returns the first element yielding the largest value of the given function or `null` if there are no elements.
*/
public inline fun <R : Comparable<R>, T : Any> Sequence<T>.maxBy(selector: (T) -> R): T? {
public inline fun <T, R : Comparable<R>> Sequence<T>.maxBy(selector: (T) -> R): T? {
val iterator = iterator()
if (!iterator.hasNext()) return null
var maxElem = iterator.next()
@@ -832,7 +832,7 @@ public fun <T : Comparable<T>> Sequence<T>.min(): T? {
/**
* Returns the first element yielding the smallest value of the given function or `null` if there are no elements.
*/
public inline fun <R : Comparable<R>, T : Any> Sequence<T>.minBy(selector: (T) -> R): T? {
public inline fun <T, R : Comparable<R>> Sequence<T>.minBy(selector: (T) -> R): T? {
val iterator = iterator()
if (!iterator.hasNext()) return null
var minElem = iterator.next()