Skip to content

Commit 6fb30e2

Browse files
demiurg906mvicsokolova
authored andcommitted
Add optins required in Kotlin 1.9
1 parent e0dd277 commit 6fb30e2

25 files changed

+49
-10
lines changed

benchmarks/src/jmh/kotlin/benchmarks/scheduler/ForkJoinBenchmark.kt

+7-2
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,13 @@ open class ForkJoinBenchmark : ParametrizedDispatcherBase() {
110110
}
111111
}
112112

113-
class RecursiveAction(val coefficients: LongArray, val start: Int, val end: Int, @Volatile var result: Double = 0.0,
114-
parent: RecursiveAction? = null) : CountedCompleter<Double>(parent) {
113+
class RecursiveAction(
114+
val coefficients: LongArray,
115+
val start: Int,
116+
val end: Int,
117+
@Volatile @OptIn(ExperimentalStdlibApi::class) var result: Double = 0.0,
118+
parent: RecursiveAction? = null
119+
) : CountedCompleter<Double>(parent) {
115120

116121
private var first: ForkJoinTask<Double>? = null
117122
private var second: ForkJoinTask<Double>? = null

benchmarks/src/jmh/kotlin/benchmarks/scheduler/StatefulAwaitsBenchmark.kt

+1
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ open class StatefulAsyncBenchmark : ParametrizedDispatcherBase() {
5757
override var dispatcher: String = "fjp"
5858

5959
@Volatile
60+
@OptIn(ExperimentalStdlibApi::class)
6061
private var state: Array<LongArray>? = null
6162

6263
@Setup

benchmarks/src/jmh/kotlin/benchmarks/tailcall/SimpleChannelBenchmark.kt

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ open class SimpleChannelBenchmark {
1919
private val iterations = 10_000
2020

2121
@Volatile
22+
@OptIn(ExperimentalStdlibApi::class)
2223
private var sink: Int = 0
2324

2425
@Benchmark

docs/topics/shared-mutable-state-and-concurrency.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -106,7 +106,8 @@ suspend fun massiveRun(action: suspend () -> Unit) {
106106
}
107107

108108
//sampleStart
109-
@Volatile // in Kotlin `volatile` is an annotation
109+
@OptIn(ExperimentalStdlibApi::class)
110+
@Volatile // in Kotlin `volatile` is an annotation
110111
var counter = 0
111112

112113
fun main() = runBlocking {

kotlinx-coroutines-core/common/src/EventLoop.common.kt

+1
Original file line numberDiff line numberDiff line change
@@ -412,6 +412,7 @@ internal abstract class EventLoopImplBase: EventLoopImplPlatform(), Delay {
412412
@JvmField var nanoTime: Long
413413
) : Runnable, Comparable<DelayedTask>, DisposableHandle, ThreadSafeHeapNode, SynchronizedObject() {
414414
@Volatile
415+
@OptIn(ExperimentalStdlibApi::class)
415416
private var _heap: Any? = null // null | ThreadSafeHeap | DISPOSED_TASK
416417

417418
override var heap: ThreadSafeHeap<*>?

kotlinx-coroutines-core/jdk8/src/future/Future.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -180,7 +180,7 @@ public suspend fun <T> CompletionStage<T>.await(): T {
180180
}
181181

182182
private class ContinuationHandler<T>(
183-
@Volatile @JvmField var cont: Continuation<T>?
183+
@Volatile @OptIn(ExperimentalStdlibApi::class) @JvmField var cont: Continuation<T>?
184184
) : BiFunction<T?, Throwable?, Unit> {
185185
@Suppress("UNCHECKED_CAST")
186186
override fun apply(result: T?, exception: Throwable?) {

kotlinx-coroutines-core/jvm/src/CoroutineContext.kt

+1
Original file line numberDiff line numberDiff line change
@@ -213,6 +213,7 @@ internal actual class UndispatchedCoroutine<in T>actual constructor (
213213
* in another.
214214
*/
215215
@Volatile
216+
@OptIn(ExperimentalStdlibApi::class)
216217
private var threadLocalIsSet = false
217218

218219
init {

kotlinx-coroutines-core/jvm/src/DefaultExecutor.kt

+2
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ internal actual object DefaultExecutor : EventLoopImplBase(), Runnable {
4444

4545
@Suppress("ObjectPropertyName")
4646
@Volatile
47+
@OptIn(ExperimentalStdlibApi::class)
4748
private var _thread: Thread? = null
4849

4950
override val thread: Thread
@@ -56,6 +57,7 @@ internal actual object DefaultExecutor : EventLoopImplBase(), Runnable {
5657
private const val SHUTDOWN = 4
5758

5859
@Volatile
60+
@OptIn(ExperimentalStdlibApi::class)
5961
private var debugStatus: Int = FRESH
6062

6163
private val isShutDown: Boolean get() = debugStatus == SHUTDOWN

kotlinx-coroutines-core/jvm/src/internal/ResizableAtomicArray.kt

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ import java.util.concurrent.atomic.*
1212
*/
1313
internal class ResizableAtomicArray<T>(initialLength: Int) {
1414
@Volatile
15+
@OptIn(ExperimentalStdlibApi::class)
1516
private var array = AtomicReferenceArray<T>(initialLength)
1617

1718
// for debug output

kotlinx-coroutines-core/jvm/src/scheduling/CoroutineScheduler.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -596,7 +596,8 @@ internal class CoroutineScheduler(
596596
}
597597

598598
// guarded by scheduler lock, index in workers array, 0 when not in array (terminated)
599-
@Volatile // volatile for push/pop operation into parkedWorkersStack
599+
@Volatile
600+
@OptIn(ExperimentalStdlibApi::class) // volatile for push/pop operation into parkedWorkersStack
600601
var indexInArray = 0
601602
set(index) {
602603
name = "$schedulerName-worker-${if (index == 0) "TERMINATED" else index.toString()}"
@@ -647,6 +648,7 @@ internal class CoroutineScheduler(
647648
* This reference is set to [NOT_IN_STACK] when worker is physically not in stack.
648649
*/
649650
@Volatile
651+
@OptIn(ExperimentalStdlibApi::class)
650652
var nextParkedWorker: Any? = NOT_IN_STACK
651653

652654
/*

kotlinx-coroutines-core/jvm/test/CancellableContinuationJvmTest.kt

+2
Original file line numberDiff line numberDiff line change
@@ -63,9 +63,11 @@ class CancellableContinuationJvmTest : TestBase() {
6363

6464
private class BlockingSource {
6565
@Volatile
66+
@OptIn(ExperimentalStdlibApi::class)
6667
private var isCancelled = false
6768

6869
@Volatile
70+
@OptIn(ExperimentalStdlibApi::class)
6971
public var hasSubscriber = false
7072

7173
public fun subscribe() {

kotlinx-coroutines-core/jvm/test/ConcurrentTestUtilities.kt

+1
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ actual fun randomWait() {
1717

1818
private object BlackHole {
1919
@Volatile
20+
@OptIn(ExperimentalStdlibApi::class)
2021
var sink = 1
2122
}
2223

kotlinx-coroutines-core/jvm/test/JobDisposeStressTest.kt

+5-1
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,17 @@ class JobDisposeStressTest: TestBase() {
1414
private val TEST_DURATION = 3 * stressTestMultiplier // seconds
1515

1616
@Volatile
17+
@OptIn(ExperimentalStdlibApi::class)
1718
private var done = false
1819
@Volatile
20+
@OptIn(ExperimentalStdlibApi::class)
1921
private var job: TestJob? = null
2022
@Volatile
23+
@OptIn(ExperimentalStdlibApi::class)
2124
private var handle: DisposableHandle? = null
2225

2326
@Volatile
27+
@OptIn(ExperimentalStdlibApi::class)
2428
private var exception: Throwable? = null
2529

2630
private fun testThread(name: String, block: () -> Unit): Thread =
@@ -77,4 +81,4 @@ class JobDisposeStressTest: TestBase() {
7781

7882
@Suppress("DEPRECATION_ERROR")
7983
private class TestJob : JobSupport(active = true)
80-
}
84+
}

kotlinx-coroutines-core/jvm/test/JobHandlersUpgradeStressTest.kt

+3-1
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,11 @@ class JobHandlersUpgradeStressTest : TestBase() {
2424
private val sink = atomic(0)
2525

2626
@Volatile
27+
@OptIn(ExperimentalStdlibApi::class)
2728
private var done = false
2829

2930
@Volatile
31+
@OptIn(ExperimentalStdlibApi::class)
3032
private var job: Job? = null
3133

3234
internal class State {
@@ -94,4 +96,4 @@ class JobHandlersUpgradeStressTest : TestBase() {
9496
println(" Fired handler ${fired.value} times")
9597

9698
}
97-
}
99+
}

kotlinx-coroutines-core/jvm/test/VirtualTimeSource.kt

+6-2
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,11 @@ internal inline fun withVirtualTimeSource(log: PrintStream? = null, block: () ->
2727
private const val NOT_PARKED = -1L
2828

2929
private class ThreadStatus {
30-
@Volatile @JvmField
30+
@Volatile
31+
@OptIn(ExperimentalStdlibApi::class) @JvmField
3132
var parkedTill = NOT_PARKED
32-
@Volatile @JvmField
33+
@Volatile
34+
@OptIn(ExperimentalStdlibApi::class) @JvmField
3335
var permit = false
3436
var registered = 0
3537
override fun toString(): String = "parkedTill = ${TimeUnit.NANOSECONDS.toMillis(parkedTill)} ms, permit = $permit"
@@ -47,9 +49,11 @@ internal class VirtualTimeSource(
4749
private var checkpointNanos: Long = System.nanoTime()
4850

4951
@Volatile
52+
@OptIn(ExperimentalStdlibApi::class)
5053
private var isShutdown = false
5154

5255
@Volatile
56+
@OptIn(ExperimentalStdlibApi::class)
5357
private var time: Long = 0
5458

5559
private var trackedTasks = 0

kotlinx-coroutines-core/jvm/test/channels/ChannelUndeliveredElementSelectOldStressTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ChannelUndeliveredElementSelectOldStressTest(private val kind: TestChannel
4040
private val receiverDone = Channel<Boolean>(1)
4141

4242
@Volatile
43+
@OptIn(ExperimentalStdlibApi::class)
4344
private var lastReceived = -1L
4445

4546
private var stoppedSender = 0L

kotlinx-coroutines-core/jvm/test/channels/ChannelUndeliveredElementStressTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class ChannelUndeliveredElementStressTest(private val kind: TestChannelKind) : T
4040
private val receiverDone = Channel<Boolean>(1)
4141

4242
@Volatile
43+
@OptIn(ExperimentalStdlibApi::class)
4344
private var lastReceived = -1L
4445

4546
private var stoppedSender = 0L

kotlinx-coroutines-core/jvm/test/flow/CallbackFlowTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ class CallbackFlowTest : TestBase() {
1515
private class CallbackApi(val block: (SendChannel<Int>) -> Unit) {
1616
var started = false
1717
@Volatile
18+
@OptIn(ExperimentalStdlibApi::class)
1819
var stopped = false
1920
lateinit var thread: Thread
2021

kotlinx-coroutines-core/jvm/test/guide/example-sync-02.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,8 @@ suspend fun massiveRun(action: suspend () -> Unit) {
2323
println("Completed ${n * k} actions in $time ms")
2424
}
2525

26-
@Volatile // in Kotlin `volatile` is an annotation
26+
@OptIn(ExperimentalStdlibApi::class)
27+
@Volatile // in Kotlin `volatile` is an annotation
2728
var counter = 0
2829

2930
fun main() = runBlocking {

kotlinx-coroutines-core/jvm/test/scheduling/WorkQueueStressTest.kt

+1
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ class WorkQueueStressTest : TestBase() {
2222
private val producerQueue = WorkQueue()
2323

2424
@Volatile
25+
@OptIn(ExperimentalStdlibApi::class)
2526
private var producerFinished = false
2627

2728
@Before

reactive/kotlinx-coroutines-reactive/src/Publish.kt

+1
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ public class PublisherCoroutine<in T>(
7474
private val _nRequested = atomic(0L) // < 0 when closed (CLOSED or SIGNALLED)
7575

7676
@Volatile
77+
@OptIn(ExperimentalStdlibApi::class)
7778
private var cancelled = false // true after Subscription.cancel() is invoked
7879

7980
override val isClosedForSend: Boolean get() = !isActive

reactive/kotlinx-coroutines-reactive/src/ReactiveFlow.kt

+1
Original file line numberDiff line numberDiff line change
@@ -197,6 +197,7 @@ public class FlowSubscription<T>(
197197
private val requested = atomic(0L)
198198
private val producer = atomic<Continuation<Unit>?>(createInitialContinuation())
199199
@Volatile
200+
@OptIn(ExperimentalStdlibApi::class)
200201
private var cancellationRequested = false
201202

202203
// This code wraps startCoroutineCancellable into continuation

reactive/kotlinx-coroutines-reactor/src/Mono.kt

+1
Original file line numberDiff line numberDiff line change
@@ -97,6 +97,7 @@ private class MonoCoroutine<in T>(
9797
private val sink: MonoSink<T>
9898
) : AbstractCoroutine<T>(parentContext, false, true), Disposable {
9999
@Volatile
100+
@OptIn(ExperimentalStdlibApi::class)
100101
private var disposed = false
101102

102103
override fun onCompleted(value: T) {

ui/kotlinx-coroutines-android/src/AndroidExceptionPreHandler.kt

+1
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ internal class AndroidExceptionPreHandler :
1313
AbstractCoroutineContextElement(CoroutineExceptionHandler), CoroutineExceptionHandler
1414
{
1515
@Volatile
16+
@OptIn(ExperimentalStdlibApi::class)
1617
private var _preHandler: Any? = this // uninitialized marker
1718

1819
// Reflectively lookup pre-handler.

ui/kotlinx-coroutines-android/src/HandlerDispatcher.kt

+2
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ internal class HandlerContext private constructor(
128128
) : this(handler, name, false)
129129

130130
@Volatile
131+
@OptIn(ExperimentalStdlibApi::class)
131132
private var _immediate: HandlerContext? = if (invokeImmediately) this else null
132133

133134
override val immediate: HandlerContext = _immediate ?:
@@ -176,6 +177,7 @@ internal class HandlerContext private constructor(
176177
override fun hashCode(): Int = System.identityHashCode(handler)
177178
}
178179

180+
@OptIn(ExperimentalStdlibApi::class)
179181
@Volatile
180182
private var choreographer: Choreographer? = null
181183

0 commit comments

Comments
 (0)