KT-58046 Promote time sources, time marks, measureTime to stable
This commit is contained in:
committed by
Space Team
parent
fd54706e1a
commit
bbb36ce501
@@ -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()
|
||||
|
||||
@@ -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 <T> measureTimedValue(block: () -> T): kotlin.time.TimedValue<T>
|
||||
|
||||
@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 <T> kotlin.time.TimeSource.measureTimedValue(block: () -> T): kotlin.time.TimedValue<T>
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.7")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.SinceKotlin(version = "1.9")
|
||||
@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class})
|
||||
public inline fun <T> kotlin.time.TimeSource.Monotonic.measureTimedValue(block: () -> T): kotlin.time.TimedValue<T>
|
||||
|
||||
@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<kotlin.time.ComparableTimeMark> {
|
||||
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<T> {
|
||||
public constructor TimedValue<T>(value: T, duration: kotlin.time.Duration)
|
||||
|
||||
|
||||
@@ -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 <T> measureTimedValue(block: () -> T): kotlin.time.TimedValue<T>
|
||||
|
||||
@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 <T> kotlin.time.TimeSource.measureTimedValue(block: () -> T): kotlin.time.TimedValue<T>
|
||||
|
||||
@kotlin.SinceKotlin(version = "1.7")
|
||||
@kotlin.time.ExperimentalTime
|
||||
@kotlin.SinceKotlin(version = "1.9")
|
||||
@kotlin.WasExperimental(markerClass = {kotlin.time.ExperimentalTime::class})
|
||||
public inline fun <T> kotlin.time.TimeSource.Monotonic.measureTimedValue(block: () -> T): kotlin.time.TimedValue<T>
|
||||
|
||||
@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<kotlin.time.ComparableTimeMark> {
|
||||
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<T> {
|
||||
public constructor TimedValue<T>(value: T, duration: kotlin.time.Duration)
|
||||
|
||||
|
||||
@@ -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<Double>) {
|
||||
@@ -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()
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -9,7 +9,6 @@ import java.util.concurrent.TimeUnit
|
||||
import kotlin.test.*
|
||||
import kotlin.time.*
|
||||
|
||||
@OptIn(ExperimentalTime::class)
|
||||
class DurationUnitJVMTest {
|
||||
@Test
|
||||
fun conversionFromTimeUnit() {
|
||||
|
||||
@@ -9,7 +9,6 @@ import kotlin.test.*
|
||||
import kotlin.time.*
|
||||
import kotlin.time.Duration.Companion.nanoseconds
|
||||
|
||||
@OptIn(ExperimentalTime::class)
|
||||
class TimeMarkJVMTest {
|
||||
|
||||
@Test
|
||||
|
||||
@@ -14,7 +14,6 @@ compileTestKotlin {
|
||||
freeCompilerArgs = [
|
||||
"-opt-in=kotlin.ExperimentalStdlibApi",
|
||||
"-opt-in=kotlin.ExperimentalUnsignedTypes",
|
||||
"-opt-in=kotlin.time.ExperimentalTime",
|
||||
]
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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<ComparableTimeMark> {
|
||||
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<ComparableTimeMark> {
|
||||
}
|
||||
|
||||
|
||||
@ExperimentalTime
|
||||
private class AdjustedTimeMark(val mark: TimeMark, val adjustment: Duration) : TimeMark {
|
||||
override fun elapsedNow(): Duration = mark.elapsedNow() - adjustment
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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<T>(val value: T, val duration: Duration)
|
||||
|
||||
/**
|
||||
@@ -73,8 +73,8 @@ public data class TimedValue<T>(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 <T> measureTimedValue(block: () -> T): TimedValue<T> {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
@@ -89,8 +89,8 @@ public inline fun <T> measureTimedValue(block: () -> T): TimedValue<T> {
|
||||
*
|
||||
* The elapsed time is measured with the specified `this` [TimeSource] instance.
|
||||
*/
|
||||
@SinceKotlin("1.3")
|
||||
@ExperimentalTime
|
||||
@SinceKotlin("1.9")
|
||||
@WasExperimental(ExperimentalTime::class)
|
||||
public inline fun <T> TimeSource.measureTimedValue(block: () -> T): TimedValue<T> {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
@@ -107,8 +107,8 @@ public inline fun <T> TimeSource.measureTimedValue(block: () -> T): TimedValue<T
|
||||
*
|
||||
* 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 <T> TimeSource.Monotonic.measureTimedValue(block: () -> T): TimedValue<T> {
|
||||
contract {
|
||||
callsInPlace(block, InvocationKind.EXACTLY_ONCE)
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.*
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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()
|
||||
|
||||
|
||||
Reference in New Issue
Block a user