Skip to content

Commit 5529385

Browse files
authored
Enable explicit api mode (#534)
* Enable explicit API mode and deprecate unintentionally public API * Cleanup some compilation warnings
1 parent de6f8cf commit 5529385

File tree

24 files changed

+152
-126
lines changed

24 files changed

+152
-126
lines changed

atomicfu/api/atomicfu.klib.api

Lines changed: 0 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,6 @@
11
// Klib ABI Dump
22
// Targets: [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, js, linuxArm32Hfp, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
33
// Alias: native => [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86, iosArm64, iosSimulatorArm64, iosX64, linuxArm32Hfp, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
4-
// Alias: androidNative => [androidNativeArm32, androidNativeArm64, androidNativeX64, androidNativeX86]
5-
// Alias: apple => [iosArm64, iosSimulatorArm64, iosX64, macosArm64, macosX64, tvosArm64, tvosSimulatorArm64, tvosX64, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
64
// Rendering settings:
75
// - Signature version: 2
86
// - Show manifest properties: true
@@ -303,10 +301,6 @@ open annotation class kotlinx.atomicfu.locks/ExperimentalThreadBlockingApi : kot
303301
final class kotlinx.atomicfu.locks/NativeMutexNode { // kotlinx.atomicfu.locks/NativeMutexNode|null[0]
304302
constructor <init>() // kotlinx.atomicfu.locks/NativeMutexNode.<init>|<init>(){}[0]
305303

306-
final var next // kotlinx.atomicfu.locks/NativeMutexNode.next|{}next[0]
307-
final fun <get-next>(): kotlinx.atomicfu.locks/NativeMutexNode? // kotlinx.atomicfu.locks/NativeMutexNode.next.<get-next>|<get-next>(){}[0]
308-
final fun <set-next>(kotlinx.atomicfu.locks/NativeMutexNode?) // kotlinx.atomicfu.locks/NativeMutexNode.next.<set-next>|<set-next>(kotlinx.atomicfu.locks.NativeMutexNode?){}[0]
309-
310304
final fun lock() // kotlinx.atomicfu.locks/NativeMutexNode.lock|lock(){}[0]
311305
final fun unlock() // kotlinx.atomicfu.locks/NativeMutexNode.unlock|unlock(){}[0]
312306
}
@@ -340,12 +334,6 @@ final inline fun <#A: kotlin/Any?> (kotlinx.atomicfu.locks/SynchronizedObject).k
340334
// Targets: [native]
341335
final inline fun <#A: kotlin/Any?> kotlinx.atomicfu.locks/synchronized(kotlinx.atomicfu.locks/SynchronizedObject, kotlin/Function0<#A>): #A // kotlinx.atomicfu.locks/synchronized|synchronized(kotlinx.atomicfu.locks.SynchronizedObject;kotlin.Function0<0:0>){0§<kotlin.Any?>}[0]
342336

343-
// Targets: [apple]
344-
final fun kotlinx.atomicfu.locks/pthreadCondAttrSetClock(kotlinx.cinterop/CPointer<platform.posix/_opaque_pthread_condattr_t>): kotlin/Int // kotlinx.atomicfu.locks/pthreadCondAttrSetClock|pthreadCondAttrSetClock(kotlinx.cinterop.CPointer<platform.posix._opaque_pthread_condattr_t>){}[0]
345-
346-
// Targets: [androidNative, mingwX64]
347-
final fun kotlinx.atomicfu.locks/createThreadId(): kotlin/Long // kotlinx.atomicfu.locks/createThreadId|createThreadId(){}[0]
348-
349337
// Targets: [js, wasmJs, wasmWasi]
350338
final class kotlinx.atomicfu.locks/ReentrantLock { // kotlinx.atomicfu.locks/ReentrantLock|null[0]
351339
constructor <init>() // kotlinx.atomicfu.locks/ReentrantLock.<init>|<init>(){}[0]

atomicfu/build.gradle.kts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,12 @@ kotlin {
146146
}
147147
}
148148
}
149+
150+
explicitApi()
151+
compilerOptions {
152+
freeCompilerArgs.add("-Xexpect-actual-classes")
153+
freeCompilerArgs.add("-Xdont-warn-on-error-suppression")
154+
}
149155
}
150156

151157
val transformer: Configuration by configurations.creating

atomicfu/src/androidNativeMain/kotlin/kotlinx/atomicfu/locks/NativeMutexNode.kt

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ import kotlinx.cinterop.ptr
1212
import platform.posix.*
1313

1414
@OptIn(ExperimentalForeignApi::class, UnsafeNumber::class)
15-
actual class NativeMutexNode {
16-
actual var next: NativeMutexNode? = null
15+
public actual class NativeMutexNode {
16+
internal actual var next: NativeMutexNode? = null
1717

1818
private val arena: Arena = Arena()
1919
private val cond: pthread_cond_t = arena.alloc()
@@ -28,11 +28,11 @@ actual class NativeMutexNode {
2828
require(pthread_mutex_init(mutex.ptr, attr.ptr) == 0)
2929
}
3030

31-
actual fun lock() {
31+
public actual fun lock() {
3232
pthread_mutex_lock(mutex.ptr)
3333
}
3434

35-
actual fun unlock() {
35+
public actual fun unlock() {
3636
pthread_mutex_unlock(mutex.ptr)
3737
}
3838

@@ -54,4 +54,4 @@ actual class NativeMutexNode {
5454

5555
private val threadCounter = atomic(0L)
5656

57-
actual fun createThreadId(): Long = threadCounter.incrementAndGet()
57+
internal actual fun createThreadId(): Long = threadCounter.incrementAndGet()

atomicfu/src/appleMain/kotlin/kotlinx/atomicfu/locks/NativeMutexNode.kt

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ import platform.posix.qos_class_self
3434
import platform.posix.PTHREAD_MUTEX_ERRORCHECK
3535

3636
@OptIn(ExperimentalForeignApi::class)
37-
actual class NativeMutexNode {
38-
actual var next: NativeMutexNode? = null
37+
public actual class NativeMutexNode {
38+
internal actual var next: NativeMutexNode? = null
3939

4040
private val arena: Arena = Arena()
4141
private val cond: pthread_cond_t = arena.alloc()
@@ -55,11 +55,11 @@ actual class NativeMutexNode {
5555
require(pthread_mutex_init(mutex.ptr, attr.ptr) == 0)
5656
}
5757

58-
actual fun lock() {
58+
public actual fun lock() {
5959
pthread_mutex_lock(mutex.ptr)
6060
}
6161

62-
actual fun unlock() {
62+
public actual fun unlock() {
6363
pthread_mutex_unlock(mutex.ptr)
6464
}
6565

atomicfu/src/appleMain/kotlin/kotlinx/atomicfu/locks/PosixParkingDelegator.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ import platform.posix.*
1010
internal actual val posixGetTimeClockId: Int
1111
get() = CLOCK_REALTIME
1212

13-
actual fun pthreadCondAttrSetClock(attr: CPointer<pthread_condattr_t>): Int = 0
13+
internal actual fun pthreadCondAttrSetClock(attr: CPointer<pthread_condattr_t>): Int = 0

atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/AtomicFU.common.kt

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -109,6 +109,7 @@ public expect fun atomic(initial: Boolean): AtomicBoolean
109109
/**
110110
* Creates array of AtomicRef<T> of specified size, where each element is initialised with null value
111111
*/
112+
@Suppress("DEPRECATION")
112113
@OptionalJsName(ATOMIC_ARRAY_OF_NULLS)
113114
public fun <T> atomicArrayOfNulls(size: Int): AtomicArray<T?> = AtomicArray(size)
114115

@@ -507,7 +508,7 @@ public inline fun AtomicLong.updateAndGet(function: (Long) -> Long): Long {
507508
/**
508509
* Creates a new array of AtomicInt values of the specified size, where each element is initialised with 0
509510
*/
510-
@OptionalJsName(ATOMIC_INT_ARRAY)
511+
@Suppress("DEPRECATION") @OptionalJsName(ATOMIC_INT_ARRAY)
511512
public class AtomicIntArray(size: Int) {
512513
private val array = Array(size) { atomic(0) }
513514

@@ -524,7 +525,7 @@ public class AtomicIntArray(size: Int) {
524525
/**
525526
* Creates a new array of AtomicLong values of the specified size, where each element is initialised with 0L
526527
*/
527-
@OptionalJsName(ATOMIC_LONG_ARRAY)
528+
@Suppress("DEPRECATION") @OptionalJsName(ATOMIC_LONG_ARRAY)
528529
public class AtomicLongArray(size: Int) {
529530
private val array = Array(size) { atomic(0L) }
530531

@@ -541,7 +542,7 @@ public class AtomicLongArray(size: Int) {
541542
/**
542543
* Creates a new array of AtomicBoolean values of the specified size, where each element is initialised with false
543544
*/
544-
@OptionalJsName(ATOMIC_BOOLEAN_ARRAY)
545+
@Suppress("DEPRECATION") @OptionalJsName(ATOMIC_BOOLEAN_ARRAY)
545546
public class AtomicBooleanArray(size: Int) {
546547
private val array = Array(size) { atomic(false) }
547548

@@ -556,7 +557,7 @@ public class AtomicBooleanArray(size: Int) {
556557

557558
// ==================================== AtomicArray ====================================
558559

559-
@OptionalJsName(ATOMIC_REF_ARRAY)
560+
@Suppress("DEPRECATION") @OptionalJsName(ATOMIC_REF_ARRAY)
560561
public class AtomicArray<T> internal constructor(size: Int) {
561562
private val array = Array(size) { atomic<T?>(null) }
562563

atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/OptionalJsName.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,5 @@ package kotlinx.atomicfu
1414
AnnotationTarget.PROPERTY_GETTER,
1515
AnnotationTarget.PROPERTY_SETTER
1616
)
17-
expect annotation class OptionalJsName(val name: String)
17+
@Deprecated("The annotation was intended for internal use only and will be hidden in the future release.")
18+
public expect annotation class OptionalJsName(val name: String)

atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/Trace.common.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ public expect val traceFormatDefault: TraceFormat
6565
/**
6666
* Base class for implementations of `Trace`.
6767
*/
68-
@OptionalJsName(TRACE_BASE_CONSTRUCTOR)
68+
@Suppress("DEPRECATION") @OptionalJsName(TRACE_BASE_CONSTRUCTOR)
6969
public open class TraceBase internal constructor() {
7070
/**
7171
* Accepts the logging [event] and appends it to the trace.
@@ -103,4 +103,4 @@ public open class TraceBase internal constructor() {
103103
* NOP tracing.
104104
*/
105105
public object None : TraceBase()
106-
}
106+
}

atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/TraceFormat.kt

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,11 +12,13 @@ import kotlin.js.JsName
1212
/**
1313
* Trace string formatter.
1414
*/
15+
@Suppress("DEPRECATION")
1516
@OptionalJsName(TRACE_FORMAT_CLASS)
1617
public open class TraceFormat {
1718
/**
1819
* Formats trace at the given [index] with the given [event] of Any type.
1920
*/
21+
@Suppress("DEPRECATION")
2022
@OptionalJsName(TRACE_FORMAT_FORMAT_FUNCTION)
2123
public open fun format(index: Int, event: Any): String = "$index: $event"
2224
}
@@ -28,4 +30,4 @@ public open class TraceFormat {
2830
public inline fun TraceFormat(crossinline format: (index: Int, event: Any) -> String): TraceFormat =
2931
object : TraceFormat() {
3032
override fun format(index: Int, event: Any): String = format(index, event)
31-
}
33+
}

atomicfu/src/commonMain/kotlin/kotlinx/atomicfu/locks/Synchronized.common.kt

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ public expect open class SynchronizedObject() // marker abstract class
99
public expect fun reentrantLock(): ReentrantLock
1010

1111
public expect class ReentrantLock() {
12-
fun lock(): Unit
13-
fun tryLock(): Boolean
14-
fun unlock(): Unit
12+
public fun lock(): Unit
13+
public fun tryLock(): Boolean
14+
public fun unlock(): Unit
1515
}
1616

1717
public expect inline fun <T> ReentrantLock.withLock(block: () -> T): T

atomicfu/src/concurrentMain/kotlin/kotlinx/atomicfu/locks/ParkingSupport.kt

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ import kotlin.time.TimeMark
4141
* it is advised to use a higher level concurrency API like `kotlinx.coroutines`
4242
*/
4343
@ExperimentalThreadBlockingApi
44-
expect object ParkingSupport {
44+
public expect object ParkingSupport {
4545

4646
/**
4747
* Parks the current thread for [timeout] duration.
@@ -53,7 +53,7 @@ expect object ParkingSupport {
5353
* - (Only on JVM) The thread was interrupted. The interrupted flag stays set after wakeup.
5454
* A future call to [park] this thread will return immediately, unless the `Thread.interrupted` flag is cleared.
5555
*/
56-
fun park(timeout: Duration)
56+
public fun park(timeout: Duration)
5757

5858
/**
5959
* Parks the current thread until [deadline] is reached.
@@ -65,7 +65,7 @@ expect object ParkingSupport {
6565
* - (Only on JVM) The thread was interrupted. The interrupted flag stays set after wakeup.
6666
* A future call to [park] this thread will return immediately, unless the `Thread.interrupted` flag is cleared.
6767
*/
68-
fun parkUntil(deadline: TimeMark)
68+
public fun parkUntil(deadline: TimeMark)
6969

7070
/**
7171
* Unparks the thread corresponding to [handle].
@@ -76,7 +76,7 @@ expect object ParkingSupport {
7676
* Meaning, when two consecutive [unpark] calls are made while the corresponding thread is not parked,
7777
* only the next park call will return immediately — [unpark] calls are not accumulated.
7878
*/
79-
fun unpark(handle: ParkingHandle)
79+
public fun unpark(handle: ParkingHandle)
8080

8181
/**
8282
* Returns the [ParkingHandle] corresponding to the current thread.
@@ -89,7 +89,7 @@ expect object ParkingSupport {
8989
* Note: this function returns a different [ParkingHandle] for each thread.
9090
* Therefore, caching a single parking handle for multiple threads will lead to unexpected behaviour.
9191
*/
92-
fun currentThreadHandle(): ParkingHandle
92+
public fun currentThreadHandle(): ParkingHandle
9393
}
9494

9595
/**
@@ -100,7 +100,7 @@ expect object ParkingSupport {
100100
* on how to use [ParkingHandle] and how parking works in general.
101101
*/
102102
@ExperimentalThreadBlockingApi
103-
expect class ParkingHandle
103+
public expect class ParkingHandle
104104

105105
/**
106106
* Marks [ParkingHandle] and [ParkingSupport] API as experimental.

0 commit comments

Comments
 (0)