From 5eb69334b410882f6ad85f544a1d1ef2fae520fe Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 27 Jul 2015 18:47:56 +0300 Subject: [PATCH] compareBy and related Comparator constructors have the same null-comparison semantics as compareValuesBy. --- libraries/stdlib/src/kotlin/util/Ordering.kt | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/libraries/stdlib/src/kotlin/util/Ordering.kt b/libraries/stdlib/src/kotlin/util/Ordering.kt index 3b621cd4aec..586e5cd28fa 100644 --- a/libraries/stdlib/src/kotlin/util/Ordering.kt +++ b/libraries/stdlib/src/kotlin/util/Ordering.kt @@ -92,7 +92,7 @@ public fun comparator(vararg functions: (T) -> Comparable<*>?): Comparator compareBy(inlineOptions(InlineOption.ONLY_LOCAL_RETURN) comparable: (T) -> Comparable<*>?): Comparator { return object : Comparator { - public override fun compare(a: T, b: T): Int = compareValues(comparable(a), comparable(b)) + public override fun compare(a: T, b: T): Int = compareValuesBy(a, b, comparable) } } @@ -101,7 +101,7 @@ inline public fun compareBy(inlineOptions(InlineOption.ONLY_LOCAL_RETURN) co */ inline public fun compareByDescending(inlineOptions(InlineOption.ONLY_LOCAL_RETURN) comparable: (T) -> Comparable<*>?): Comparator { return object : Comparator { - public override fun compare(a: T, b: T): Int = compareValues(comparable(b), comparable(a)) + public override fun compare(a: T, b: T): Int = compareValuesBy(b, a, comparable) } } @@ -113,7 +113,7 @@ inline public fun Comparator.thenBy(inlineOptions(InlineOption.ONLY_LOCAL return object : Comparator { public override fun compare(a: T, b: T): Int { val previousCompare = this@thenBy.compare(a, b) - return if (previousCompare != 0) previousCompare else compareValues(comparable(a), comparable(b)) + return if (previousCompare != 0) previousCompare else compareValuesBy(a, b, comparable) } } } @@ -126,7 +126,7 @@ inline public fun Comparator.thenByDescending(inlineOptions(InlineOption. return object : Comparator { public override fun compare(a: T, b: T): Int { val previousCompare = this@thenByDescending.compare(a, b) - return if (previousCompare != 0) previousCompare else compareValues(comparable(b), comparable(a)) + return if (previousCompare != 0) previousCompare else compareValuesBy(b, a, comparable) } } }