From ffd9d8c71d03e0515f6ec314902a83dc3591dbd2 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Wed, 5 Jun 2019 23:20:02 +0300 Subject: [PATCH] Remove unneeded buildString from Duration.toString --- libraries/stdlib/src/kotlin/time/Duration.kt | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/libraries/stdlib/src/kotlin/time/Duration.kt b/libraries/stdlib/src/kotlin/time/Duration.kt index 883ba6d44b8..ae5fc427e1f 100644 --- a/libraries/stdlib/src/kotlin/time/Duration.kt +++ b/libraries/stdlib/src/kotlin/time/Duration.kt @@ -114,15 +114,14 @@ public inline class Duration internal constructor(internal val value: Double) : public fun toLongNanoseconds(): Long = toLong(DurationUnit.NANOSECONDS) public fun toLongMilliseconds(): Long = toLong(DurationUnit.MILLISECONDS) - override fun toString(): String = buildString { - if (isInfinite()) { - append(value) - } else { + override fun toString(): String = when { + isInfinite() -> value.toString() + value == 0.0 -> "0s" + else -> { val absNs = absoluteValue.inNanoseconds var scientific = false var maxDecimals = 0 val unit = when { - absNs == 0.0 -> return "0s" absNs < 1e-6 -> DurationUnit.SECONDS.also { scientific = true } absNs < 1 -> DurationUnit.NANOSECONDS.also { maxDecimals = 7 } absNs < 1e3 -> DurationUnit.NANOSECONDS @@ -135,7 +134,7 @@ public inline class Duration internal constructor(internal val value: Double) : else -> DurationUnit.DAYS.also { scientific = true } } val value = toDouble(unit) - return when { + when { scientific -> formatScientific(value) maxDecimals > 0 -> formatUpToDecimals(value, maxDecimals) else -> formatToExactDecimals(value, precision(abs(value)))