From bbb36ce501a254f4105aab9de0c719b9e890a8c4 Mon Sep 17 00:00:00 2001 From: Ilya Gorbunov Date: Tue, 18 Apr 2023 20:47:57 +0200 Subject: [PATCH] KT-58046 Promote time sources, time marks, measureTime to stable --- .../kotlin/kotlin/time/MonotonicTimeSource.kt | 1 - libraries/stdlib/api/js-v1/kotlin.time.kt | 56 +++++++++---------- libraries/stdlib/api/js/kotlin.time.kt | 56 +++++++++---------- .../js/src/kotlin/time/MonoTimeSource.kt | 5 -- .../jvm/src/kotlin/time/MonoTimeSource.kt | 1 - .../jvm/test/time/DurationUnitJVMTest.kt | 1 - .../stdlib/jvm/test/time/TimeMarkJVMTest.kt | 1 - libraries/stdlib/samples/build.gradle | 1 - .../stdlib/src/kotlin/time/TimeSource.kt | 21 ++++--- .../stdlib/src/kotlin/time/TimeSources.kt | 9 ++- .../stdlib/src/kotlin/time/measureTime.kt | 28 +++++----- libraries/stdlib/test/time/MeasureTimeTest.kt | 1 - .../stdlib/test/time/TestTimeSourceTest.kt | 1 - libraries/stdlib/test/time/TimeMarkTest.kt | 3 +- .../wasm/src/kotlin/time/TimeSources.kt | 1 - 15 files changed, 85 insertions(+), 101 deletions(-) diff --git a/kotlin-native/runtime/src/main/kotlin/kotlin/time/MonotonicTimeSource.kt b/kotlin-native/runtime/src/main/kotlin/kotlin/time/MonotonicTimeSource.kt index 86819bad62b..13d64f47852 100644 --- a/kotlin-native/runtime/src/main/kotlin/kotlin/time/MonotonicTimeSource.kt +++ b/kotlin-native/runtime/src/main/kotlin/kotlin/time/MonotonicTimeSource.kt @@ -9,7 +9,6 @@ import kotlin.system.* import kotlin.time.TimeSource.Monotonic.ValueTimeMark @SinceKotlin("1.3") -@ExperimentalTime internal actual object MonotonicTimeSource : TimeSource.WithComparableMarks { @Suppress("DEPRECATION") private val zero: Long = getTimeNanos() diff --git a/libraries/stdlib/api/js-v1/kotlin.time.kt b/libraries/stdlib/api/js-v1/kotlin.time.kt index 03c5238aa18..baaf34ddfbe 100644 --- a/libraries/stdlib/api/js-v1/kotlin.time.kt +++ b/libraries/stdlib/api/js-v1/kotlin.time.kt @@ -124,28 +124,28 @@ public val kotlin.Int.seconds: kotlin.time.Duration { get; } @kotlin.DeprecatedSinceKotlin(errorSince = "1.8", hiddenSince = "1.9", warningSince = "1.5") public val kotlin.Long.seconds: kotlin.time.Duration { get; } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun measureTime(block: () -> kotlin.Unit): kotlin.time.Duration -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun measureTimedValue(block: () -> T): kotlin.time.TimedValue -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun kotlin.time.TimeSource.measureTime(block: () -> kotlin.Unit): kotlin.time.Duration -@kotlin.SinceKotlin(version = "1.7") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun kotlin.time.TimeSource.Monotonic.measureTime(block: () -> kotlin.Unit): kotlin.time.Duration -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun kotlin.time.TimeSource.measureTimedValue(block: () -> T): kotlin.time.TimedValue -@kotlin.SinceKotlin(version = "1.7") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun kotlin.time.TimeSource.Monotonic.measureTimedValue(block: () -> T): kotlin.time.TimedValue @kotlin.SinceKotlin(version = "1.6") @@ -183,8 +183,8 @@ public abstract class AbstractDoubleTimeSource : kotlin.time.TimeSource.WithComp protected abstract fun read(): kotlin.Double } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public abstract class AbstractLongTimeSource : kotlin.time.TimeSource.WithComparableMarks { public constructor AbstractLongTimeSource(unit: kotlin.time.DurationUnit) @@ -195,8 +195,8 @@ public abstract class AbstractLongTimeSource : kotlin.time.TimeSource.WithCompar protected abstract fun read(): kotlin.Long } -@kotlin.SinceKotlin(version = "1.8") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public interface ComparableTimeMark : kotlin.time.TimeMark, kotlin.Comparable { public open override operator fun compareTo(other: kotlin.time.ComparableTimeMark): kotlin.Int @@ -560,8 +560,8 @@ public final annotation class ExperimentalTime : kotlin.Annotation { public constructor ExperimentalTime() } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public final class TestTimeSource : kotlin.time.AbstractLongTimeSource { public constructor TestTimeSource() @@ -570,8 +570,8 @@ public final class TestTimeSource : kotlin.time.AbstractLongTimeSource { protected open override fun read(): kotlin.Long } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public interface TimeMark { public abstract fun elapsedNow(): kotlin.time.Duration @@ -584,8 +584,8 @@ public interface TimeMark { public open operator fun plus(duration: kotlin.time.Duration): kotlin.time.TimeMark } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public interface TimeSource { public abstract fun markNow(): kotlin.time.TimeMark @@ -597,8 +597,8 @@ public interface TimeSource { public open override fun toString(): kotlin.String - @kotlin.time.ExperimentalTime - @kotlin.SinceKotlin(version = "1.7") + @kotlin.SinceKotlin(version = "1.9") + @kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) @kotlin.jvm.JvmInline public final inline class ValueTimeMark : kotlin.time.ComparableTimeMark { public final operator fun compareTo(other: kotlin.time.TimeSource.Monotonic.ValueTimeMark): kotlin.Int @@ -625,15 +625,15 @@ public interface TimeSource { } } - @kotlin.SinceKotlin(version = "1.8") - @kotlin.time.ExperimentalTime + @kotlin.SinceKotlin(version = "1.9") + @kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public interface WithComparableMarks : kotlin.time.TimeSource { public abstract override fun markNow(): kotlin.time.ComparableTimeMark } } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public final data class TimedValue { public constructor TimedValue(value: T, duration: kotlin.time.Duration) diff --git a/libraries/stdlib/api/js/kotlin.time.kt b/libraries/stdlib/api/js/kotlin.time.kt index 03c5238aa18..baaf34ddfbe 100644 --- a/libraries/stdlib/api/js/kotlin.time.kt +++ b/libraries/stdlib/api/js/kotlin.time.kt @@ -124,28 +124,28 @@ public val kotlin.Int.seconds: kotlin.time.Duration { get; } @kotlin.DeprecatedSinceKotlin(errorSince = "1.8", hiddenSince = "1.9", warningSince = "1.5") public val kotlin.Long.seconds: kotlin.time.Duration { get; } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun measureTime(block: () -> kotlin.Unit): kotlin.time.Duration -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun measureTimedValue(block: () -> T): kotlin.time.TimedValue -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun kotlin.time.TimeSource.measureTime(block: () -> kotlin.Unit): kotlin.time.Duration -@kotlin.SinceKotlin(version = "1.7") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun kotlin.time.TimeSource.Monotonic.measureTime(block: () -> kotlin.Unit): kotlin.time.Duration -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun kotlin.time.TimeSource.measureTimedValue(block: () -> T): kotlin.time.TimedValue -@kotlin.SinceKotlin(version = "1.7") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public inline fun kotlin.time.TimeSource.Monotonic.measureTimedValue(block: () -> T): kotlin.time.TimedValue @kotlin.SinceKotlin(version = "1.6") @@ -183,8 +183,8 @@ public abstract class AbstractDoubleTimeSource : kotlin.time.TimeSource.WithComp protected abstract fun read(): kotlin.Double } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public abstract class AbstractLongTimeSource : kotlin.time.TimeSource.WithComparableMarks { public constructor AbstractLongTimeSource(unit: kotlin.time.DurationUnit) @@ -195,8 +195,8 @@ public abstract class AbstractLongTimeSource : kotlin.time.TimeSource.WithCompar protected abstract fun read(): kotlin.Long } -@kotlin.SinceKotlin(version = "1.8") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public interface ComparableTimeMark : kotlin.time.TimeMark, kotlin.Comparable { public open override operator fun compareTo(other: kotlin.time.ComparableTimeMark): kotlin.Int @@ -560,8 +560,8 @@ public final annotation class ExperimentalTime : kotlin.Annotation { public constructor ExperimentalTime() } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public final class TestTimeSource : kotlin.time.AbstractLongTimeSource { public constructor TestTimeSource() @@ -570,8 +570,8 @@ public final class TestTimeSource : kotlin.time.AbstractLongTimeSource { protected open override fun read(): kotlin.Long } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public interface TimeMark { public abstract fun elapsedNow(): kotlin.time.Duration @@ -584,8 +584,8 @@ public interface TimeMark { public open operator fun plus(duration: kotlin.time.Duration): kotlin.time.TimeMark } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public interface TimeSource { public abstract fun markNow(): kotlin.time.TimeMark @@ -597,8 +597,8 @@ public interface TimeSource { public open override fun toString(): kotlin.String - @kotlin.time.ExperimentalTime - @kotlin.SinceKotlin(version = "1.7") + @kotlin.SinceKotlin(version = "1.9") + @kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) @kotlin.jvm.JvmInline public final inline class ValueTimeMark : kotlin.time.ComparableTimeMark { public final operator fun compareTo(other: kotlin.time.TimeSource.Monotonic.ValueTimeMark): kotlin.Int @@ -625,15 +625,15 @@ public interface TimeSource { } } - @kotlin.SinceKotlin(version = "1.8") - @kotlin.time.ExperimentalTime + @kotlin.SinceKotlin(version = "1.9") + @kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public interface WithComparableMarks : kotlin.time.TimeSource { public abstract override fun markNow(): kotlin.time.ComparableTimeMark } } -@kotlin.SinceKotlin(version = "1.3") -@kotlin.time.ExperimentalTime +@kotlin.SinceKotlin(version = "1.9") +@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class}) public final data class TimedValue { public constructor TimedValue(value: T, duration: kotlin.time.Duration) diff --git a/libraries/stdlib/js/src/kotlin/time/MonoTimeSource.kt b/libraries/stdlib/js/src/kotlin/time/MonoTimeSource.kt index c057f7d864d..e99065c222c 100644 --- a/libraries/stdlib/js/src/kotlin/time/MonoTimeSource.kt +++ b/libraries/stdlib/js/src/kotlin/time/MonoTimeSource.kt @@ -12,7 +12,6 @@ import kotlin.time.TimeSource.Monotonic.ValueTimeMark @Suppress("ACTUAL_WITHOUT_EXPECT") // visibility internal actual typealias ValueTimeMarkReading = Any -@ExperimentalTime internal interface DefaultTimeSource : TimeSource.WithComparableMarks { override fun markNow(): ValueTimeMark fun elapsedFrom(timeMark: ValueTimeMark): Duration @@ -21,7 +20,6 @@ internal interface DefaultTimeSource : TimeSource.WithComparableMarks { } @SinceKotlin("1.3") -@ExperimentalTime internal actual object MonotonicTimeSource : DefaultTimeSource, TimeSource.WithComparableMarks { // TODO: interface should not be required here private val actualSource: DefaultTimeSource = run { @@ -50,7 +48,6 @@ internal external interface Process { } @SinceKotlin("1.3") -@ExperimentalTime internal class HrTimeSource(private val process: Process) : DefaultTimeSource { @Suppress("NOTHING_TO_INLINE") private class Reading(val components: Array) { @@ -87,7 +84,6 @@ internal class HrTimeSource(private val process: Process) : DefaultTimeSource { } @SinceKotlin("1.3") -@ExperimentalTime internal class PerformanceTimeSource(private val performance: Performance) : DefaultTimeSource { // AbstractDoubleTimeSource(unit = DurationUnit.MILLISECONDS) { private fun read(): Double = performance.now() @@ -108,7 +104,6 @@ internal class PerformanceTimeSource(private val performance: Performance) : } @SinceKotlin("1.3") -@ExperimentalTime internal object DateNowTimeSource : DefaultTimeSource { private fun read(): Double = kotlin.js.Date.now() diff --git a/libraries/stdlib/jvm/src/kotlin/time/MonoTimeSource.kt b/libraries/stdlib/jvm/src/kotlin/time/MonoTimeSource.kt index 66862690d33..86bc300aebf 100644 --- a/libraries/stdlib/jvm/src/kotlin/time/MonoTimeSource.kt +++ b/libraries/stdlib/jvm/src/kotlin/time/MonoTimeSource.kt @@ -8,7 +8,6 @@ package kotlin.time import kotlin.time.TimeSource.Monotonic.ValueTimeMark @SinceKotlin("1.3") -@ExperimentalTime internal actual object MonotonicTimeSource : TimeSource.WithComparableMarks { private val zero: Long = System.nanoTime() private fun read(): Long = System.nanoTime() - zero diff --git a/libraries/stdlib/jvm/test/time/DurationUnitJVMTest.kt b/libraries/stdlib/jvm/test/time/DurationUnitJVMTest.kt index 7416b429ce9..065efa1f9fa 100644 --- a/libraries/stdlib/jvm/test/time/DurationUnitJVMTest.kt +++ b/libraries/stdlib/jvm/test/time/DurationUnitJVMTest.kt @@ -9,7 +9,6 @@ import java.util.concurrent.TimeUnit import kotlin.test.* import kotlin.time.* -@OptIn(ExperimentalTime::class) class DurationUnitJVMTest { @Test fun conversionFromTimeUnit() { diff --git a/libraries/stdlib/jvm/test/time/TimeMarkJVMTest.kt b/libraries/stdlib/jvm/test/time/TimeMarkJVMTest.kt index 3e40f811f77..f797c22279f 100644 --- a/libraries/stdlib/jvm/test/time/TimeMarkJVMTest.kt +++ b/libraries/stdlib/jvm/test/time/TimeMarkJVMTest.kt @@ -9,7 +9,6 @@ import kotlin.test.* import kotlin.time.* import kotlin.time.Duration.Companion.nanoseconds -@OptIn(ExperimentalTime::class) class TimeMarkJVMTest { @Test diff --git a/libraries/stdlib/samples/build.gradle b/libraries/stdlib/samples/build.gradle index 5a41e4abf99..d2e2db138cc 100644 --- a/libraries/stdlib/samples/build.gradle +++ b/libraries/stdlib/samples/build.gradle @@ -14,7 +14,6 @@ compileTestKotlin { freeCompilerArgs = [ "-opt-in=kotlin.ExperimentalStdlibApi", "-opt-in=kotlin.ExperimentalUnsignedTypes", - "-opt-in=kotlin.time.ExperimentalTime", ] } } diff --git a/libraries/stdlib/src/kotlin/time/TimeSource.kt b/libraries/stdlib/src/kotlin/time/TimeSource.kt index 7d9612473b9..845243632a7 100644 --- a/libraries/stdlib/src/kotlin/time/TimeSource.kt +++ b/libraries/stdlib/src/kotlin/time/TimeSource.kt @@ -15,8 +15,8 @@ import kotlin.jvm.JvmInline * @see [measureTime] * @see [measureTimedValue] */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public interface TimeSource { /** * Marks a point in time on this time source. @@ -29,8 +29,8 @@ public interface TimeSource { /** * A [TimeSource] that returns [time marks][ComparableTimeMark] that can be compared for difference with each other. */ - @SinceKotlin("1.8") - @ExperimentalTime + @SinceKotlin("1.9") + @WasExperimental(ExperimentalTime::class) public interface WithComparableMarks : TimeSource { override fun markNow(): ComparableTimeMark } @@ -60,8 +60,8 @@ public interface TimeSource { * This time mark implements [ComparableTimeMark] and therefore is comparable with other time marks * obtained from the same [TimeSource.Monotonic] time source. */ - @ExperimentalTime - @SinceKotlin("1.7") + @SinceKotlin("1.9") + @WasExperimental(ExperimentalTime::class) @JvmInline public value class ValueTimeMark internal constructor(internal val reading: ValueTimeMarkReading) : ComparableTimeMark { override fun elapsedNow(): Duration = MonotonicTimeSource.elapsedFrom(this) @@ -114,8 +114,8 @@ internal expect class ValueTimeMarkReading * Represents a time point notched on a particular [TimeSource]. Remains bound to the time source it was taken from * and allows querying for the duration of time elapsed from that point (see the function [elapsedNow]). */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public interface TimeMark { /** * Returns the amount of time passed from this mark measured with the time source from which this mark was taken. @@ -175,8 +175,8 @@ public interface TimeMark { /** * A [TimeMark] that can be compared for difference with other time marks obtained from the same [TimeSource.WithComparableMarks] time source. */ -@SinceKotlin("1.8") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public interface ComparableTimeMark : TimeMark, Comparable { public abstract override operator fun plus(duration: Duration): ComparableTimeMark public open override operator fun minus(duration: Duration): ComparableTimeMark = plus(-duration) @@ -221,7 +221,6 @@ public interface ComparableTimeMark : TimeMark, Comparable { } -@ExperimentalTime private class AdjustedTimeMark(val mark: TimeMark, val adjustment: Duration) : TimeMark { override fun elapsedNow(): Duration = mark.elapsedNow() - adjustment diff --git a/libraries/stdlib/src/kotlin/time/TimeSources.kt b/libraries/stdlib/src/kotlin/time/TimeSources.kt index 73e7080385b..4e9600d2ef7 100644 --- a/libraries/stdlib/src/kotlin/time/TimeSources.kt +++ b/libraries/stdlib/src/kotlin/time/TimeSources.kt @@ -8,7 +8,6 @@ package kotlin.time import kotlin.math.sign @SinceKotlin("1.3") -@ExperimentalTime internal expect object MonotonicTimeSource : TimeSource.WithComparableMarks { override fun markNow(): TimeSource.Monotonic.ValueTimeMark fun elapsedFrom(timeMark: TimeSource.Monotonic.ValueTimeMark): Duration @@ -24,8 +23,8 @@ internal expect object MonotonicTimeSource : TimeSource.WithComparableMarks { * * @property unit The unit in which this time source's readings are expressed. */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public abstract class AbstractLongTimeSource(protected val unit: DurationUnit) : TimeSource.WithComparableMarks { /** * This protected method should be overridden to return the current reading of the time source expressed as a [Long] number @@ -149,8 +148,8 @@ public abstract class AbstractDoubleTimeSource(protected val unit: DurationUnit) * thus it's capable to represent a time range of approximately ±292 years. * Should the reading value overflow as the result of [plusAssign] operation, an [IllegalStateException] is thrown. */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public class TestTimeSource : AbstractLongTimeSource(unit = DurationUnit.NANOSECONDS) { private var reading: Long = 0L diff --git a/libraries/stdlib/src/kotlin/time/measureTime.kt b/libraries/stdlib/src/kotlin/time/measureTime.kt index 600ef2639c6..7ea26f179fb 100644 --- a/libraries/stdlib/src/kotlin/time/measureTime.kt +++ b/libraries/stdlib/src/kotlin/time/measureTime.kt @@ -12,8 +12,8 @@ import kotlin.contracts.* * * The elapsed time is measured with [TimeSource.Monotonic]. */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public inline fun measureTime(block: () -> Unit): Duration { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) @@ -27,8 +27,8 @@ public inline fun measureTime(block: () -> Unit): Duration { * * The elapsed time is measured with the specified `this` [TimeSource] instance. */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public inline fun TimeSource.measureTime(block: () -> Unit): Duration { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) @@ -44,8 +44,8 @@ public inline fun TimeSource.measureTime(block: () -> Unit): Duration { * * The elapsed time is measured with the specified `this` [TimeSource.Monotonic] instance. */ -@SinceKotlin("1.7") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public inline fun TimeSource.Monotonic.measureTime(block: () -> Unit): Duration { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) @@ -63,8 +63,8 @@ public inline fun TimeSource.Monotonic.measureTime(block: () -> Unit): Duration * @property value the result of the action. * @property duration the time elapsed to execute the action. */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public data class TimedValue(val value: T, val duration: Duration) /** @@ -73,8 +73,8 @@ public data class TimedValue(val value: T, val duration: Duration) * * The elapsed time is measured with [TimeSource.Monotonic]. */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public inline fun measureTimedValue(block: () -> T): TimedValue { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) @@ -89,8 +89,8 @@ public inline fun measureTimedValue(block: () -> T): TimedValue { * * The elapsed time is measured with the specified `this` [TimeSource] instance. */ -@SinceKotlin("1.3") -@ExperimentalTime +@SinceKotlin("1.9") +@WasExperimental(ExperimentalTime::class) public inline fun TimeSource.measureTimedValue(block: () -> T): TimedValue { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) @@ -107,8 +107,8 @@ public inline fun TimeSource.measureTimedValue(block: () -> T): TimedValue TimeSource.Monotonic.measureTimedValue(block: () -> T): TimedValue { contract { callsInPlace(block, InvocationKind.EXACTLY_ONCE) diff --git a/libraries/stdlib/test/time/MeasureTimeTest.kt b/libraries/stdlib/test/time/MeasureTimeTest.kt index 0b2a188822c..27bec21fe43 100644 --- a/libraries/stdlib/test/time/MeasureTimeTest.kt +++ b/libraries/stdlib/test/time/MeasureTimeTest.kt @@ -3,7 +3,6 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -@file:OptIn(ExperimentalTime::class) package test.time import kotlin.random.Random diff --git a/libraries/stdlib/test/time/TestTimeSourceTest.kt b/libraries/stdlib/test/time/TestTimeSourceTest.kt index d0a1e7dd255..48f747c977f 100644 --- a/libraries/stdlib/test/time/TestTimeSourceTest.kt +++ b/libraries/stdlib/test/time/TestTimeSourceTest.kt @@ -3,7 +3,6 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -@file:OptIn(ExperimentalTime::class) package test.time import kotlin.test.* diff --git a/libraries/stdlib/test/time/TimeMarkTest.kt b/libraries/stdlib/test/time/TimeMarkTest.kt index 451d95d7fdc..8a996afe3ed 100644 --- a/libraries/stdlib/test/time/TimeMarkTest.kt +++ b/libraries/stdlib/test/time/TimeMarkTest.kt @@ -3,7 +3,6 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ -@file:OptIn(ExperimentalTime::class) package test.time import kotlin.math.sign @@ -14,7 +13,6 @@ import kotlin.time.Duration.Companion.milliseconds import kotlin.time.Duration.Companion.nanoseconds import kotlin.time.Duration.Companion.seconds -@OptIn(ExperimentalTime::class) class TimeMarkTest { private val units = DurationUnit.values() @@ -228,6 +226,7 @@ class TimeMarkTest { override fun read(): Long = reading } + @OptIn(ExperimentalTime::class) @Suppress("DEPRECATION") private class DoubleTimeSource(unit: DurationUnit) : AbstractDoubleTimeSource(unit) { var reading: Double = 0.0 diff --git a/libraries/stdlib/wasm/src/kotlin/time/TimeSources.kt b/libraries/stdlib/wasm/src/kotlin/time/TimeSources.kt index bf61e721b81..5e329307128 100644 --- a/libraries/stdlib/wasm/src/kotlin/time/TimeSources.kt +++ b/libraries/stdlib/wasm/src/kotlin/time/TimeSources.kt @@ -21,7 +21,6 @@ private fun dateNow(): Double = js("Date.now()") @SinceKotlin("1.3") -@ExperimentalTime internal actual object MonotonicTimeSource : TimeSource.WithComparableMarks { private val performance: ExternalInterfaceType? = tryGetPerformance()