From a9518052188a81ae1fd5aec21649a484a3895ce6 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Thu, 27 Dec 2018 04:42:36 +0300 Subject: [PATCH] Refactor: introduce PrimitiveType.isFloatingPoint --- libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt | 4 ++-- .../tools/kotlin-stdlib-gen/src/templates/Comparables.kt | 4 ++-- .../tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt | 3 +++ 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt index a20fcf4d782..cc22806e145 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Aggregates.kt @@ -232,7 +232,7 @@ object Aggregates : TemplateGroupBase() { val f_minMax = run { - val genericSpecializations = PrimitiveType.numericPrimitives.filterNot { it.isIntegral() }.toSet() + setOf(null) + val genericSpecializations = PrimitiveType.floatingPointPrimitives + setOf(null) listOf("min", "max").map { op -> fn("$op()") { @@ -242,7 +242,7 @@ object Aggregates : TemplateGroupBase() { include(ArraysOfPrimitives, PrimitiveType.defaultPrimitives - PrimitiveType.Boolean) include(CharSequences) } builder { - val isFloat = primitive?.isIntegral() == false + val isFloat = primitive?.isFloatingPoint() == true val isGeneric = f in listOf(Iterables, Sequences, ArraysOfObjects) typeParam("T : Comparable") diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/Comparables.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/Comparables.kt index 1419c022428..a50153b498e 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/Comparables.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/Comparables.kt @@ -174,7 +174,7 @@ object ComparableOps : TemplateGroupBase() { body { "return minOf(a.toInt(), b.toInt()).$convertBack" } } } - if (primitive?.isIntegral() == false) { + if (primitive?.isFloatingPoint() == true) { on(Platform.Native) { body { """ @@ -314,7 +314,7 @@ object ComparableOps : TemplateGroupBase() { body { "return maxOf(a.toInt(), b.toInt()).$convertBack" } } } - if (primitive?.isIntegral() == false) { + if (primitive?.isFloatingPoint() == true) { on(Platform.Native) { body { """ diff --git a/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt b/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt index 4afd8048e89..c535305607e 100644 --- a/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt +++ b/libraries/tools/kotlin-stdlib-gen/src/templates/dsl/CommonTypes.kt @@ -60,6 +60,7 @@ enum class PrimitiveType { val defaultPrimitives = PrimitiveType.values().toSet() - unsignedPrimitives val numericPrimitives = setOf(Int, Long, Byte, Short, Double, Float) val integralPrimitives = setOf(Int, Long, Byte, Short, Char) + val floatingPointPrimitives = setOf(Double, Float) val rangePrimitives = setOf(Int, Long, Char, UInt, ULong) val descendingByDomainCapacity = listOf(Double, Float, Long, Int, Short, Char, Byte) @@ -73,6 +74,8 @@ enum class PrimitiveType { fun PrimitiveType.isIntegral(): Boolean = this in PrimitiveType.integralPrimitives fun PrimitiveType.isNumeric(): Boolean = this in PrimitiveType.numericPrimitives +fun PrimitiveType.isFloatingPoint(): Boolean = this in PrimitiveType.floatingPointPrimitives + enum class Inline { No, Yes,