From d7252548fc1e58cc525d857b1e3d103b4721648d Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Mon, 17 Jun 2019 21:10:39 +0300 Subject: [PATCH] Add symmetric number * duration operators --- libraries/stdlib/src/kotlin/time/Duration.kt | 15 +++++++++++++-- libraries/stdlib/test/time/DurationTest.kt | 4 ++++ 2 files changed, 17 insertions(+), 2 deletions(-) diff --git a/libraries/stdlib/src/kotlin/time/Duration.kt b/libraries/stdlib/src/kotlin/time/Duration.kt index 7690d94a2aa..ff27f4f1f8c 100644 --- a/libraries/stdlib/src/kotlin/time/Duration.kt +++ b/libraries/stdlib/src/kotlin/time/Duration.kt @@ -57,8 +57,6 @@ public inline class Duration internal constructor(internal val value: Double) : /** Returns a duration whose value is the difference between this and [other] duration values. */ public operator fun minus(other: Duration): Duration = Duration(value - other.value) - // should we declare symmetric extension operators? - /** Returns a duration whose value is this duration value multiplied by the given [scale] number. */ public operator fun times(scale: Int): Duration = Duration(value * scale) @@ -459,6 +457,19 @@ public val Long.days get() = toDuration(DurationUnit.DAYS) public val Double.days get() = toDuration(DurationUnit.DAYS) +/** Returns a duration whose value is the specified [duration] value multiplied by this number. */ +@SinceKotlin("1.3") +@ExperimentalTime +@kotlin.internal.InlineOnly +public inline operator fun Int.times(duration: Duration): Duration = duration * this + +/** Returns a duration whose value is the specified [duration] value multiplied by this number. */ +@SinceKotlin("1.3") +@ExperimentalTime +@kotlin.internal.InlineOnly +public inline operator fun Double.times(duration: Duration): Duration = duration * this + + internal expect fun formatToExactDecimals(value: Double, decimals: Int): String internal expect fun formatUpToDecimals(value: Double, decimals: Int): String internal expect fun formatScientific(value: Double): String \ No newline at end of file diff --git a/libraries/stdlib/test/time/DurationTest.kt b/libraries/stdlib/test/time/DurationTest.kt index 0e61da9633a..716ed927bec 100644 --- a/libraries/stdlib/test/time/DurationTest.kt +++ b/libraries/stdlib/test/time/DurationTest.kt @@ -233,6 +233,10 @@ class DurationTest { assertEquals(1.days, 12.hours * 2) assertEquals(1.days, 60.minutes * 24.0) assertEquals(1.microseconds, 20.nanoseconds * 50) + + assertEquals(1.days, 2 * 12.hours) + assertEquals(12.5.hours, 12.5 * 60.minutes) + assertEquals(1.microseconds, 50 * 20.nanoseconds) } @Test