Skip to content

Commit 13d817f

Browse files
committed
Migrate BCV
1 parent 9460d44 commit 13d817f

File tree

4 files changed

+64
-4
lines changed

4 files changed

+64
-4
lines changed

.github/workflows/check.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ jobs:
2222
- uses: ./.github/workflows/setup-gradle
2323

2424
- name: Kotlin binary compatibility validator
25-
run: ./gradlew apiCheck
25+
run: ./gradlew checkLegacyAbi
2626

2727
- name: Detekt
2828
run: ./gradlew detektAll

api/semver.klib.api

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
// Klib ABI Dump
2+
// Targets: [iosArm64, iosSimulatorArm64, iosX64, js, linuxArm64, linuxX64, macosArm64, macosX64, mingwX64, tvosArm64, tvosSimulatorArm64, tvosX64, wasmJs, 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: <semver>
9+
final class net.swiftzer.semver/SemVer : kotlin/Comparable<net.swiftzer.semver/SemVer> { // net.swiftzer.semver/SemVer|null[0]
10+
constructor <init>(kotlin/Int, kotlin/Int = ..., kotlin/Int = ..., kotlin/String? = ..., kotlin/String? = ...) // net.swiftzer.semver/SemVer.<init>|<init>(kotlin.Int;kotlin.Int;kotlin.Int;kotlin.String?;kotlin.String?){}[0]
11+
12+
final val buildMetadata // net.swiftzer.semver/SemVer.buildMetadata|{}buildMetadata[0]
13+
final fun <get-buildMetadata>(): kotlin/String? // net.swiftzer.semver/SemVer.buildMetadata.<get-buildMetadata>|<get-buildMetadata>(){}[0]
14+
final val major // net.swiftzer.semver/SemVer.major|{}major[0]
15+
final fun <get-major>(): kotlin/Int // net.swiftzer.semver/SemVer.major.<get-major>|<get-major>(){}[0]
16+
final val minor // net.swiftzer.semver/SemVer.minor|{}minor[0]
17+
final fun <get-minor>(): kotlin/Int // net.swiftzer.semver/SemVer.minor.<get-minor>|<get-minor>(){}[0]
18+
final val patch // net.swiftzer.semver/SemVer.patch|{}patch[0]
19+
final fun <get-patch>(): kotlin/Int // net.swiftzer.semver/SemVer.patch.<get-patch>|<get-patch>(){}[0]
20+
final val preRelease // net.swiftzer.semver/SemVer.preRelease|{}preRelease[0]
21+
final fun <get-preRelease>(): kotlin/String? // net.swiftzer.semver/SemVer.preRelease.<get-preRelease>|<get-preRelease>(){}[0]
22+
23+
final fun compareTo(net.swiftzer.semver/SemVer): kotlin/Int // net.swiftzer.semver/SemVer.compareTo|compareTo(net.swiftzer.semver.SemVer){}[0]
24+
final fun component1(): kotlin/Int // net.swiftzer.semver/SemVer.component1|component1(){}[0]
25+
final fun component2(): kotlin/Int // net.swiftzer.semver/SemVer.component2|component2(){}[0]
26+
final fun component3(): kotlin/Int // net.swiftzer.semver/SemVer.component3|component3(){}[0]
27+
final fun component4(): kotlin/String? // net.swiftzer.semver/SemVer.component4|component4(){}[0]
28+
final fun component5(): kotlin/String? // net.swiftzer.semver/SemVer.component5|component5(){}[0]
29+
final fun copy(kotlin/Int = ..., kotlin/Int = ..., kotlin/Int = ..., kotlin/String? = ..., kotlin/String? = ...): net.swiftzer.semver/SemVer // net.swiftzer.semver/SemVer.copy|copy(kotlin.Int;kotlin.Int;kotlin.Int;kotlin.String?;kotlin.String?){}[0]
30+
final fun equals(kotlin/Any?): kotlin/Boolean // net.swiftzer.semver/SemVer.equals|equals(kotlin.Any?){}[0]
31+
final fun hashCode(): kotlin/Int // net.swiftzer.semver/SemVer.hashCode|hashCode(){}[0]
32+
final fun isInitialDevelopmentPhase(): kotlin/Boolean // net.swiftzer.semver/SemVer.isInitialDevelopmentPhase|isInitialDevelopmentPhase(){}[0]
33+
final fun nextMajor(): net.swiftzer.semver/SemVer // net.swiftzer.semver/SemVer.nextMajor|nextMajor(){}[0]
34+
final fun nextMinor(): net.swiftzer.semver/SemVer // net.swiftzer.semver/SemVer.nextMinor|nextMinor(){}[0]
35+
final fun nextPatch(): net.swiftzer.semver/SemVer // net.swiftzer.semver/SemVer.nextPatch|nextPatch(){}[0]
36+
final fun toString(): kotlin/String // net.swiftzer.semver/SemVer.toString|toString(){}[0]
37+
38+
final object Companion { // net.swiftzer.semver/SemVer.Companion|null[0]
39+
final fun parse(kotlin/String): net.swiftzer.semver/SemVer // net.swiftzer.semver/SemVer.Companion.parse|parse(kotlin.String){}[0]
40+
final fun parseOrNull(kotlin/String): net.swiftzer.semver/SemVer? // net.swiftzer.semver/SemVer.Companion.parseOrNull|parseOrNull(kotlin.String){}[0]
41+
final fun serializer(): kotlinx.serialization/KSerializer<net.swiftzer.semver/SemVer> // net.swiftzer.semver/SemVer.Companion.serializer|serializer(){}[0]
42+
}
43+
}
44+
45+
final object net.swiftzer.semver/SemVerSerializer : kotlinx.serialization/KSerializer<net.swiftzer.semver/SemVer> { // net.swiftzer.semver/SemVerSerializer|null[0]
46+
final val descriptor // net.swiftzer.semver/SemVerSerializer.descriptor|{}descriptor[0]
47+
final fun <get-descriptor>(): kotlinx.serialization.descriptors/SerialDescriptor // net.swiftzer.semver/SemVerSerializer.descriptor.<get-descriptor>|<get-descriptor>(){}[0]
48+
49+
final fun deserialize(kotlinx.serialization.encoding/Decoder): net.swiftzer.semver/SemVer // net.swiftzer.semver/SemVerSerializer.deserialize|deserialize(kotlinx.serialization.encoding.Decoder){}[0]
50+
final fun serialize(kotlinx.serialization.encoding/Encoder, net.swiftzer.semver/SemVer) // net.swiftzer.semver/SemVerSerializer.serialize|serialize(kotlinx.serialization.encoding.Encoder;net.swiftzer.semver.SemVer){}[0]
51+
}

build.gradle.kts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,12 @@
33
import io.gitlab.arturbosch.detekt.Detekt
44
import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl
55
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
6+
import org.jetbrains.kotlin.gradle.dsl.abi.ExperimentalAbiValidation
67
import java.io.FileInputStream
78
import java.util.Properties
89

910
plugins {
1011
alias(libs.plugins.kotlin.multiplatform)
11-
alias(libs.plugins.kotlinx.binaryCompatibilityValidator)
1212
alias(libs.plugins.kotlinx.serialization)
1313
alias(libs.plugins.dokka)
1414
alias(libs.plugins.kover)
@@ -25,6 +25,10 @@ if (publishingPropertiesFile.exists()) {
2525

2626
kotlin {
2727
explicitApi()
28+
@OptIn(ExperimentalAbiValidation::class)
29+
abiValidation {
30+
enabled = true
31+
}
2832

2933
jvm {
3034
compilerOptions.jvmTarget = JvmTarget.JVM_1_8
@@ -145,5 +149,12 @@ tasks.register("detektAll") {
145149
dependsOn(tasks.withType<Detekt>())
146150
}
147151

152+
tasks.check {
153+
dependsOn(
154+
// TODO: https://youtrack.jetbrains.com/issue/KT-78525
155+
tasks.checkLegacyAbi,
156+
)
157+
}
158+
148159
fun getProperty(propertyName: String): String? =
149160
providers.environmentVariable(propertyName).orNull ?: publishingProperties.getProperty(propertyName)

gradle/libs.versions.toml

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ dokka = "2.1.0"
55
gradleMavenPublish = "0.35.0"
66
kotest = "5.9.1"
77
kotlin = "2.2.21"
8-
kotlinxBinaryCompatibilityValidator = "0.18.1"
98
kotlinxSerialization = "1.9.0"
109
kover = "0.9.1"
1110

@@ -22,6 +21,5 @@ detekt = { id = "io.gitlab.arturbosch.detekt", version.ref = "detekt" }
2221
dokka = { id = "org.jetbrains.dokka", version.ref = "dokka" }
2322
gradleMavenPublish = { id = "com.vanniktech.maven.publish", version.ref = "gradleMavenPublish" }
2423
kotlin-multiplatform = { id = "org.jetbrains.kotlin.multiplatform", version.ref = "kotlin" }
25-
kotlinx-binaryCompatibilityValidator = { id = "org.jetbrains.kotlinx.binary-compatibility-validator", version.ref = "kotlinxBinaryCompatibilityValidator" }
2624
kotlinx-serialization = { id = "org.jetbrains.kotlin.plugin.serialization", version.ref = "kotlin" }
2725
kover = { id = "org.jetbrains.kotlinx.kover", version.ref = "kover" }

0 commit comments

Comments
 (0)