Skip to content

Commit cc68ebf

Browse files
committed
Update abiValidation
1 parent 1954d29 commit cc68ebf

File tree

20 files changed

+397
-22
lines changed

20 files changed

+397
-22
lines changed

build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
66
import util.asDokkaVersion
7-
import util.configureApiValidation
87
import util.configureNpm
98
import util.configureProjectReport
109
import util.registerDumpPlatformTableTask
@@ -80,7 +79,6 @@ dependencies {
8079

8180
configureProjectReport()
8281
configureNpm()
83-
configureApiValidation()
8482

8583
registerDumpPlatformTableTask()
8684
registerVerifyPlatformTableTask()

core/api/core.klib.api

Lines changed: 91 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,91 @@
1+
// Klib ABI Dump
2+
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, wasmWasi, watchosArm32, watchosArm64, watchosDeviceArm64, watchosSimulatorArm64, watchosX64]
3+
// Rendering settings:
4+
// - Signature version: 2
5+
// - Show manifest properties: true
6+
// - Show declarations: true
7+
8+
// Library unique name: <org.jetbrains.kotlinx:core>
9+
open annotation class kotlinx.rpc.annotations/CheckedTypeAnnotation : kotlin/Annotation { // kotlinx.rpc.annotations/CheckedTypeAnnotation|null[0]
10+
constructor <init>() // kotlinx.rpc.annotations/CheckedTypeAnnotation.<init>|<init>(){}[0]
11+
}
12+
13+
open annotation class kotlinx.rpc.annotations/Rpc : kotlin/Annotation { // kotlinx.rpc.annotations/Rpc|null[0]
14+
constructor <init>() // kotlinx.rpc.annotations/Rpc.<init>|<init>(){}[0]
15+
}
16+
17+
abstract interface <#A: kotlin/Any> kotlinx.rpc.descriptor/RpcCallable { // kotlinx.rpc.descriptor/RpcCallable|null[0]
18+
abstract val invokator // kotlinx.rpc.descriptor/RpcCallable.invokator|{}invokator[0]
19+
abstract fun <get-invokator>(): kotlinx.rpc.descriptor/RpcInvokator<#A> // kotlinx.rpc.descriptor/RpcCallable.invokator.<get-invokator>|<get-invokator>(){}[0]
20+
abstract val isNonSuspendFunction // kotlinx.rpc.descriptor/RpcCallable.isNonSuspendFunction|{}isNonSuspendFunction[0]
21+
abstract fun <get-isNonSuspendFunction>(): kotlin/Boolean // kotlinx.rpc.descriptor/RpcCallable.isNonSuspendFunction.<get-isNonSuspendFunction>|<get-isNonSuspendFunction>(){}[0]
22+
abstract val name // kotlinx.rpc.descriptor/RpcCallable.name|{}name[0]
23+
abstract fun <get-name>(): kotlin/String // kotlinx.rpc.descriptor/RpcCallable.name.<get-name>|<get-name>(){}[0]
24+
abstract val parameters // kotlinx.rpc.descriptor/RpcCallable.parameters|{}parameters[0]
25+
abstract fun <get-parameters>(): kotlin/Array<out kotlinx.rpc.descriptor/RpcParameter> // kotlinx.rpc.descriptor/RpcCallable.parameters.<get-parameters>|<get-parameters>(){}[0]
26+
abstract val returnType // kotlinx.rpc.descriptor/RpcCallable.returnType|{}returnType[0]
27+
abstract fun <get-returnType>(): kotlinx.rpc.descriptor/RpcType // kotlinx.rpc.descriptor/RpcCallable.returnType.<get-returnType>|<get-returnType>(){}[0]
28+
}
29+
30+
abstract interface <#A: kotlin/Any> kotlinx.rpc.descriptor/RpcServiceDescriptor { // kotlinx.rpc.descriptor/RpcServiceDescriptor|null[0]
31+
abstract val fqName // kotlinx.rpc.descriptor/RpcServiceDescriptor.fqName|{}fqName[0]
32+
abstract fun <get-fqName>(): kotlin/String // kotlinx.rpc.descriptor/RpcServiceDescriptor.fqName.<get-fqName>|<get-fqName>(){}[0]
33+
34+
abstract fun createInstance(kotlin/Long, kotlinx.rpc/RpcClient): #A // kotlinx.rpc.descriptor/RpcServiceDescriptor.createInstance|createInstance(kotlin.Long;kotlinx.rpc.RpcClient){}[0]
35+
abstract fun getCallable(kotlin/String): kotlinx.rpc.descriptor/RpcCallable<#A>? // kotlinx.rpc.descriptor/RpcServiceDescriptor.getCallable|getCallable(kotlin.String){}[0]
36+
}
37+
38+
abstract interface kotlinx.rpc.descriptor/RpcParameter { // kotlinx.rpc.descriptor/RpcParameter|null[0]
39+
abstract val annotations // kotlinx.rpc.descriptor/RpcParameter.annotations|{}annotations[0]
40+
abstract fun <get-annotations>(): kotlin.collections/List<kotlin/Annotation> // kotlinx.rpc.descriptor/RpcParameter.annotations.<get-annotations>|<get-annotations>(){}[0]
41+
abstract val name // kotlinx.rpc.descriptor/RpcParameter.name|{}name[0]
42+
abstract fun <get-name>(): kotlin/String // kotlinx.rpc.descriptor/RpcParameter.name.<get-name>|<get-name>(){}[0]
43+
abstract val type // kotlinx.rpc.descriptor/RpcParameter.type|{}type[0]
44+
abstract fun <get-type>(): kotlinx.rpc.descriptor/RpcType // kotlinx.rpc.descriptor/RpcParameter.type.<get-type>|<get-type>(){}[0]
45+
}
46+
47+
abstract interface kotlinx.rpc.descriptor/RpcType { // kotlinx.rpc.descriptor/RpcType|null[0]
48+
abstract val annotations // kotlinx.rpc.descriptor/RpcType.annotations|{}annotations[0]
49+
abstract fun <get-annotations>(): kotlin.collections/List<kotlin/Annotation> // kotlinx.rpc.descriptor/RpcType.annotations.<get-annotations>|<get-annotations>(){}[0]
50+
abstract val kType // kotlinx.rpc.descriptor/RpcType.kType|{}kType[0]
51+
abstract fun <get-kType>(): kotlin.reflect/KType // kotlinx.rpc.descriptor/RpcType.kType.<get-kType>|<get-kType>(){}[0]
52+
}
53+
54+
abstract interface kotlinx.rpc/RemoteService // kotlinx.rpc/RemoteService|null[0]
55+
56+
abstract interface kotlinx.rpc/RpcClient { // kotlinx.rpc/RpcClient|null[0]
57+
abstract fun <#A1: kotlin/Any?> callServerStreaming(kotlinx.rpc/RpcCall): kotlinx.coroutines.flow/Flow<#A1> // kotlinx.rpc/RpcClient.callServerStreaming|callServerStreaming(kotlinx.rpc.RpcCall){0§<kotlin.Any?>}[0]
58+
abstract suspend fun <#A1: kotlin/Any?> call(kotlinx.rpc/RpcCall): #A1 // kotlinx.rpc/RpcClient.call|call(kotlinx.rpc.RpcCall){0§<kotlin.Any?>}[0]
59+
}
60+
61+
abstract interface kotlinx.rpc/RpcServer { // kotlinx.rpc/RpcServer|null[0]
62+
abstract fun <#A1: kotlin/Any> deregisterService(kotlin.reflect/KClass<#A1>) // kotlinx.rpc/RpcServer.deregisterService|deregisterService(kotlin.reflect.KClass<0:0>){0§<kotlin.Any>}[0]
63+
abstract fun <#A1: kotlin/Any> registerService(kotlin.reflect/KClass<#A1>, kotlin/Function0<#A1>) // kotlinx.rpc/RpcServer.registerService|registerService(kotlin.reflect.KClass<0:0>;kotlin.Function0<0:0>){0§<kotlin.Any>}[0]
64+
}
65+
66+
sealed interface <#A: kotlin/Any> kotlinx.rpc.descriptor/RpcInvokator { // kotlinx.rpc.descriptor/RpcInvokator|null[0]
67+
abstract fun interface <#A1: kotlin/Any> Method : kotlinx.rpc.descriptor/RpcInvokator<#A1> { // kotlinx.rpc.descriptor/RpcInvokator.Method|null[0]
68+
abstract suspend fun call(#A1, kotlin/Array<kotlin/Any?>): kotlin/Any? // kotlinx.rpc.descriptor/RpcInvokator.Method.call|call(1:0;kotlin.Array<kotlin.Any?>){}[0]
69+
}
70+
}
71+
72+
final class kotlinx.rpc/RpcCall { // kotlinx.rpc/RpcCall|null[0]
73+
constructor <init>(kotlinx.rpc.descriptor/RpcServiceDescriptor<*>, kotlin/String, kotlin/Array<kotlin/Any?>, kotlin/Long) // kotlinx.rpc/RpcCall.<init>|<init>(kotlinx.rpc.descriptor.RpcServiceDescriptor<*>;kotlin.String;kotlin.Array<kotlin.Any?>;kotlin.Long){}[0]
74+
75+
final val callableName // kotlinx.rpc/RpcCall.callableName|{}callableName[0]
76+
final fun <get-callableName>(): kotlin/String // kotlinx.rpc/RpcCall.callableName.<get-callableName>|<get-callableName>(){}[0]
77+
final val descriptor // kotlinx.rpc/RpcCall.descriptor|{}descriptor[0]
78+
final fun <get-descriptor>(): kotlinx.rpc.descriptor/RpcServiceDescriptor<*> // kotlinx.rpc/RpcCall.descriptor.<get-descriptor>|<get-descriptor>(){}[0]
79+
final val parameters // kotlinx.rpc/RpcCall.parameters|{}parameters[0]
80+
final fun <get-parameters>(): kotlin/Array<kotlin/Any?> // kotlinx.rpc/RpcCall.parameters.<get-parameters>|<get-parameters>(){}[0]
81+
final val serviceId // kotlinx.rpc/RpcCall.serviceId|{}serviceId[0]
82+
final fun <get-serviceId>(): kotlin/Long // kotlinx.rpc/RpcCall.serviceId.<get-serviceId>|<get-serviceId>(){}[0]
83+
}
84+
85+
final fun <#A: kotlin/Any> (kotlinx.rpc/RpcClient).kotlinx.rpc/withService(kotlin.reflect/KClass<#A>): #A // kotlinx.rpc/withService|[email protected](kotlin.reflect.KClass<0:0>){0§<kotlin.Any>}[0]
86+
final fun <#A: kotlin/Any> (kotlinx.rpc/RpcClient).kotlinx.rpc/withService(kotlin.reflect/KType): #A // kotlinx.rpc/withService|[email protected](kotlin.reflect.KType){0§<kotlin.Any>}[0]
87+
final fun <#A: kotlin/Any> kotlinx.rpc.descriptor/serviceDescriptorOf(kotlin.reflect/KClass<#A>): kotlinx.rpc.descriptor/RpcServiceDescriptor<#A> // kotlinx.rpc.descriptor/serviceDescriptorOf|serviceDescriptorOf(kotlin.reflect.KClass<0:0>){0§<kotlin.Any>}[0]
88+
final fun <#A: kotlin/Any> kotlinx.rpc.descriptor/serviceDescriptorOf(kotlin.reflect/KType): kotlinx.rpc.descriptor/RpcServiceDescriptor<#A> // kotlinx.rpc.descriptor/serviceDescriptorOf|serviceDescriptorOf(kotlin.reflect.KType){0§<kotlin.Any>}[0]
89+
final inline fun <#A: reified kotlin/Any> (kotlinx.rpc/RpcClient).kotlinx.rpc/withService(): #A // kotlinx.rpc/withService|[email protected](){0§<kotlin.Any>}[0]
90+
final inline fun <#A: reified kotlin/Any> (kotlinx.rpc/RpcServer).kotlinx.rpc/registerService(noinline kotlin/Function0<#A>) // kotlinx.rpc/registerService|[email protected](kotlin.Function0<0:0>){0§<kotlin.Any>}[0]
91+
final inline fun <#A: reified kotlin/Any> kotlinx.rpc.descriptor/serviceDescriptorOf(): kotlinx.rpc.descriptor/RpcServiceDescriptor<#A> // kotlinx.rpc.descriptor/serviceDescriptorOf|serviceDescriptorOf(){0§<kotlin.Any>}[0]

gradle-conventions/common/build.gradle.kts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ dependencies {
1414
api(libs.kotlin.gradle.plugin)
1515
api(libs.detekt.gradle.plugin)
1616
api(libs.dokka.gradle.plugin)
17-
api(libs.binary.compatibility.validator.gradle.plugin)
1817

1918
if (isLatestKotlinVersion) {
2019
api(libs.kover.gradle.plugin)

gradle-conventions/common/src/main/kotlin/util/apiValidation.kt

Lines changed: 38 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,50 @@
44

55
package util
66

7-
import kotlinx.validation.ApiValidationExtension
87
import org.gradle.api.Project
9-
import org.gradle.kotlin.dsl.the
8+
import org.gradle.kotlin.dsl.configure
9+
import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationExtension
10+
import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationMultiplatformExtension
11+
import org.jetbrains.kotlin.gradle.dsl.abi.AbiValidationVariantSpec
12+
import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation
1013

14+
@OptIn(ExperimentalAbiValidation::class)
1115
fun Project.configureApiValidation() {
12-
plugins.apply(libs.plugins.binary.compatibility.validator.get().pluginId)
16+
when (project.name) {
17+
"krpc-test",
18+
"krpc-compatibility-tests",
19+
"compiler-plugin-tests",
20+
-> return
21+
}
22+
23+
withKotlinJvmExtension {
24+
extensions.configure<AbiValidationExtension> {
25+
enabled.set(true)
26+
27+
configureFilters()
28+
}
29+
}
1330

14-
val kotlinMasterBuild by optionalProperty()
31+
withKotlinKmpExtension {
32+
extensions.configure<AbiValidationMultiplatformExtension> {
33+
enabled.set(true)
1534

16-
the<ApiValidationExtension>().apply {
17-
ignoredPackages.add("kotlinx.rpc.internal")
18-
ignoredPackages.add("kotlinx.rpc.krpc.internal")
35+
klib {
36+
enabled.set(true)
37+
}
1938

20-
ignoredProjects.addAll(
21-
listOfNotNull(
22-
if (kotlinMasterBuild) null else "compiler-plugin-tests",
23-
"krpc-test",
24-
"utils",
25-
"krpc-compatibility-tests",
26-
)
27-
)
39+
configureFilters()
40+
}
41+
}
42+
}
2843

29-
nonPublicMarkers.add("kotlinx.rpc.internal.utils.InternalRpcApi")
44+
@OptIn(ExperimentalAbiValidation::class)
45+
private fun AbiValidationVariantSpec.configureFilters() {
46+
filters {
47+
excluded {
48+
annotatedWith.add("kotlinx.rpc.internal.utils.InternalRpcApi")
49+
byNames.add("kotlinx.rpc.internal.**")
50+
byNames.add("kotlinx.rpc.krpc.internal.**")
51+
}
3052
}
3153
}

gradle-conventions/src/main/kotlin/conventions-common.gradle.kts

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
*/
44

55
import io.gitlab.arturbosch.detekt.Detekt
6+
import util.configureApiValidation
67
import util.libs
78
import util.whenKotlinLatest
89

@@ -16,6 +17,8 @@ val globalRootDir: String by extra
1617

1718
val globalDetektDir = "$globalRootDir/detekt"
1819

20+
configureApiValidation()
21+
1922
// https://detekt.dev/docs/gettingstarted/gradle#options-for-detekt-configuration-closure
2023
detekt {
2124
toolVersion = libs.versions.detekt.analyzer.get()
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
// Klib ABI Dump
2+
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, watchosArm64, watchosSimulatorArm64, watchosX64]
3+
// Rendering settings:
4+
// - Signature version: 2
5+
// - Show manifest properties: true
6+
// - Show declarations: true
7+
8+
// Library unique name: <org.jetbrains.kotlinx:krpc-client>
9+
abstract class kotlinx.rpc.krpc.client/InitializedKrpcClient : kotlinx.rpc.krpc.client/KrpcClient { // kotlinx.rpc.krpc.client/InitializedKrpcClient|null[0]
10+
constructor <init>(kotlinx.rpc.krpc/KrpcConfig.Client, kotlinx.rpc.krpc/KrpcTransport) // kotlinx.rpc.krpc.client/InitializedKrpcClient.<init>|<init>(kotlinx.rpc.krpc.KrpcConfig.Client;kotlinx.rpc.krpc.KrpcTransport){}[0]
11+
12+
final fun initializeConfig(): kotlinx.rpc.krpc/KrpcConfig.Client // kotlinx.rpc.krpc.client/InitializedKrpcClient.initializeConfig|initializeConfig(){}[0]
13+
final suspend fun initializeTransport(): kotlinx.rpc.krpc/KrpcTransport // kotlinx.rpc.krpc.client/InitializedKrpcClient.initializeTransport|initializeTransport(){}[0]
14+
}
15+
16+
abstract class kotlinx.rpc.krpc.client/KrpcClient : kotlinx.rpc.krpc.internal/KrpcEndpoint, kotlinx.rpc/RpcClient { // kotlinx.rpc.krpc.client/KrpcClient|null[0]
17+
constructor <init>() // kotlinx.rpc.krpc.client/KrpcClient.<init>|<init>(){}[0]
18+
19+
abstract fun initializeConfig(): kotlinx.rpc.krpc/KrpcConfig.Client // kotlinx.rpc.krpc.client/KrpcClient.initializeConfig|initializeConfig(){}[0]
20+
abstract suspend fun initializeTransport(): kotlinx.rpc.krpc/KrpcTransport // kotlinx.rpc.krpc.client/KrpcClient.initializeTransport|initializeTransport(){}[0]
21+
final fun <#A1: kotlin/Any?> callServerStreaming(kotlinx.rpc/RpcCall): kotlinx.coroutines.flow/Flow<#A1> // kotlinx.rpc.krpc.client/KrpcClient.callServerStreaming|callServerStreaming(kotlinx.rpc.RpcCall){0§<kotlin.Any?>}[0]
22+
final fun close(kotlin/String? = ...) // kotlinx.rpc.krpc.client/KrpcClient.close|close(kotlin.String?){}[0]
23+
final suspend fun <#A1: kotlin/Any?> call(kotlinx.rpc/RpcCall): #A1 // kotlinx.rpc.krpc.client/KrpcClient.call|call(kotlinx.rpc.RpcCall){0§<kotlin.Any?>}[0]
24+
final suspend fun awaitCompletion() // kotlinx.rpc.krpc.client/KrpcClient.awaitCompletion|awaitCompletion(){}[0]
25+
}

0 commit comments

Comments
 (0)