From e781b3325877a21fde898624f80b04580b3f3ce7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 3 Jun 2026 09:47:18 +0000 Subject: [PATCH 1/2] Update kotlin monorepo to v2.4.0 --- gradle/libs.versions.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index d34b443904..8018f4ea60 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -13,7 +13,7 @@ jimfs = "1.3.1" jmh = "1.37" jsr305 = "3.0.2" junit = "4.13.2" -kotlin = "2.3.21" +kotlin = "2.4.0" # Set to lower version than KGP version to maximize compatibility kotlinCoreLibrariesVersion = "2.0.21" kotlinpoet = "2.3.0" From 9c273acb623e42c6d6adee17becd52b4dab5eed2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Beno=C3=AEt=20Quenaudon?= Date: Sat, 6 Jun 2026 12:03:47 +0100 Subject: [PATCH 2/2] Address API changes --- build-support/build.gradle.kts | 2 +- .../wire/buildsupport/WireBuildPlugin.kt | 63 +++++++++---------- kotlin-js-store/yarn.lock | 31 ++++++++- samples/js/build.gradle.kts | 2 +- .../wire-grpc-sample/server/build.gradle.kts | 2 +- .../com/squareup/wire/gradle/WirePlugin.kt | 4 +- .../squareup/wire/gradle/WirePluginTest.kt | 4 +- .../projects/cache-relocation-1/build.gradle | 4 +- .../projects/cache-relocation-2/build.gradle | 4 +- .../cache-source-relocation-1/build.gradle | 4 +- .../cache-source-relocation-2/build.gradle | 4 +- .../com/squareup/wire/schema/Service.kt | 8 ++- 12 files changed, 75 insertions(+), 57 deletions(-) diff --git a/build-support/build.gradle.kts b/build-support/build.gradle.kts index a2cdb9ee63..52e0708ceb 100644 --- a/build-support/build.gradle.kts +++ b/build-support/build.gradle.kts @@ -81,7 +81,7 @@ allprojects { tasks.withType().configureEach { compilerOptions { jvmTarget.set(JvmTarget.JVM_11) - freeCompilerArgs.add("-Xjvm-default=all") + freeCompilerArgs.add("-jvm-default=no-compatibility") } } } diff --git a/build-support/src/main/kotlin/com/squareup/wire/buildsupport/WireBuildPlugin.kt b/build-support/src/main/kotlin/com/squareup/wire/buildsupport/WireBuildPlugin.kt index 01eb44e881..1feb9747b9 100644 --- a/build-support/src/main/kotlin/com/squareup/wire/buildsupport/WireBuildPlugin.kt +++ b/build-support/src/main/kotlin/com/squareup/wire/buildsupport/WireBuildPlugin.kt @@ -50,7 +50,6 @@ import org.gradle.kotlin.dsl.register import org.gradle.kotlin.dsl.withType import org.jetbrains.dokka.gradle.DokkaExtension import org.jetbrains.kotlin.gradle.dsl.JvmTarget -import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinVersion @@ -231,7 +230,7 @@ class WireBuildPlugin : Plugin { tasks.withType(KotlinJvmCompile::class.java).configureEach { compilerOptions { jvmTarget.set(JvmTarget.fromTarget(javaVersion.toString())) - freeCompilerArgs.add("-Xjvm-default=all") + freeCompilerArgs.add("-jvm-default=no-compatibility") } } // Kotlin requires the Java compatibility matches. @@ -252,48 +251,46 @@ class WireBuildPlugin : Plugin { kotlin.configureWebKotlinLibraries() } plugins.withId("org.jetbrains.kotlin.js") { - val kotlin = extensions.getByName("kotlin") as KotlinJsProjectExtension - kotlin.configureWebKotlinLibraries() + val kotlin = extensions.getByName("kotlin") as KotlinProjectExtension + kotlin.configureJsKotlinLibraries() } } // For KotlinWasm/Js, versions of toolchain and stdlib need to be the same: // https://youtrack.jetbrains.com/issue/KT-71032 - private fun KotlinProjectExtension.configureWebKotlinLibraries() { + private fun KotlinProjectExtension.configureJsKotlinLibraries() { val kotlinVersion = project.getVersionByName("kotlin") - when (this) { - is KotlinJsProjectExtension -> { - val suffix = "js" - sourceSets.apply { - getByName("main").dependencies { - implementation("org.jetbrains.kotlin:kotlin-stdlib-$suffix:$kotlinVersion") - } - getByName("test").dependencies { - implementation("org.jetbrains.kotlin:kotlin-stdlib-$suffix:$kotlinVersion") - implementation("org.jetbrains.kotlin:kotlin-test-$suffix:$kotlinVersion") - } - } + val suffix = "js" + sourceSets.apply { + getByName("main").dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-$suffix:$kotlinVersion") } + getByName("test").dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-$suffix:$kotlinVersion") + implementation("org.jetbrains.kotlin:kotlin-test-$suffix:$kotlinVersion") + } + } + } - is KotlinMultiplatformExtension -> { - targets.matching { it.platformType in listOf(KotlinPlatformType.js, KotlinPlatformType.wasm) }.configureEach { - val suffix = when (platformType) { - KotlinPlatformType.js -> "js" - KotlinPlatformType.wasm -> if (targetName.contains("wasi", true)) "wasm-wasi" else "wasm-js" - else -> return@configureEach - } + private fun KotlinMultiplatformExtension.configureWebKotlinLibraries() { + val kotlinVersion = project.getVersionByName("kotlin") - this@configureWebKotlinLibraries.sourceSets.apply { - getByName("${targetName}Main").dependencies { - implementation("org.jetbrains.kotlin:kotlin-stdlib-$suffix:$kotlinVersion") - } + targets.matching { it.platformType in listOf(KotlinPlatformType.js, KotlinPlatformType.wasm) }.configureEach { + val suffix = when (platformType) { + KotlinPlatformType.js -> "js" + KotlinPlatformType.wasm -> if (targetName.contains("wasi", true)) "wasm-wasi" else "wasm-js" + else -> return@configureEach + } - getByName("${targetName}Test").dependencies { - implementation("org.jetbrains.kotlin:kotlin-stdlib-$suffix:$kotlinVersion") - implementation("org.jetbrains.kotlin:kotlin-test-$suffix:$kotlinVersion") - } - } + this@configureWebKotlinLibraries.sourceSets.apply { + getByName("${targetName}Main").dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-$suffix:$kotlinVersion") + } + + getByName("${targetName}Test").dependencies { + implementation("org.jetbrains.kotlin:kotlin-stdlib-$suffix:$kotlinVersion") + implementation("org.jetbrains.kotlin:kotlin-test-$suffix:$kotlinVersion") } } } diff --git a/kotlin-js-store/yarn.lock b/kotlin-js-store/yarn.lock index 8ef641d83f..fb1f3a3438 100644 --- a/kotlin-js-store/yarn.lock +++ b/kotlin-js-store/yarn.lock @@ -3034,7 +3034,16 @@ streamroller@^3.1.5: debug "^4.3.4" fs-extra "^8.1.0" -"string-width-cjs@npm:string-width@^4.2.0", string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: +"string-width-cjs@npm:string-width@^4.2.0": + version "4.2.3" + resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" + integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== + dependencies: + emoji-regex "^8.0.0" + is-fullwidth-code-point "^3.0.0" + strip-ansi "^6.0.1" + +string-width@^4.1.0, string-width@^4.2.0, string-width@^4.2.3: version "4.2.3" resolved "https://registry.yarnpkg.com/string-width/-/string-width-4.2.3.tgz#269c7117d27b05ad2e536830a8ec895ef9c6d010" integrity sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g== @@ -3066,7 +3075,14 @@ string_decoder@~1.1.1: dependencies: safe-buffer "~5.1.0" -"strip-ansi-cjs@npm:strip-ansi@^6.0.1", strip-ansi@^6.0.0, strip-ansi@^6.0.1: +"strip-ansi-cjs@npm:strip-ansi@^6.0.1": + version "6.0.1" + resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" + integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== + dependencies: + ansi-regex "^5.0.1" + +strip-ansi@^6.0.0, strip-ansi@^6.0.1: version "6.0.1" resolved "https://registry.yarnpkg.com/strip-ansi/-/strip-ansi-6.0.1.tgz#9e26c63d30f53443e9489495b2105d37b67a85d9" integrity sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A== @@ -3424,7 +3440,16 @@ workerpool@^9.2.0: resolved "https://registry.yarnpkg.com/workerpool/-/workerpool-9.3.4.tgz#f6c92395b2141afd78e2a889e80cb338fe9fca41" integrity sha512-TmPRQYYSAnnDiEB0P/Ytip7bFGvqnSU6I2BcuSw7Hx+JSg/DsUi5ebYfc8GYaSdpuvOcEs6dXxPurOYpe9QFwg== -"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0", wrap-ansi@^7.0.0: +"wrap-ansi-cjs@npm:wrap-ansi@^7.0.0": + version "7.0.0" + resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" + integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== + dependencies: + ansi-styles "^4.0.0" + string-width "^4.1.0" + strip-ansi "^6.0.0" + +wrap-ansi@^7.0.0: version "7.0.0" resolved "https://registry.yarnpkg.com/wrap-ansi/-/wrap-ansi-7.0.0.tgz#67e145cff510a6a6984bdf1152911d69d2eb9e43" integrity sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q== diff --git a/samples/js/build.gradle.kts b/samples/js/build.gradle.kts index 053722d0e0..a413b8ce4f 100644 --- a/samples/js/build.gradle.kts +++ b/samples/js/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - kotlin("js") + kotlin("multiplatform") id("com.squareup.wire") } diff --git a/samples/wire-grpc-sample/server/build.gradle.kts b/samples/wire-grpc-sample/server/build.gradle.kts index 1dcfc165ed..7b672374d7 100644 --- a/samples/wire-grpc-sample/server/build.gradle.kts +++ b/samples/wire-grpc-sample/server/build.gradle.kts @@ -19,7 +19,7 @@ tasks.withType().configureEach { tasks.withType().configureEach { compilerOptions { jvmTarget.set(JvmTarget.JVM_17) - freeCompilerArgs.add("-Xjvm-default=all") + freeCompilerArgs.add("-jvm-default=no-compatibility") } } diff --git a/wire-gradle-plugin/src/main/kotlin/com/squareup/wire/gradle/WirePlugin.kt b/wire-gradle-plugin/src/main/kotlin/com/squareup/wire/gradle/WirePlugin.kt index fbff3d7eba..986851ebcf 100644 --- a/wire-gradle-plugin/src/main/kotlin/com/squareup/wire/gradle/WirePlugin.kt +++ b/wire-gradle-plugin/src/main/kotlin/com/squareup/wire/gradle/WirePlugin.kt @@ -28,8 +28,8 @@ import org.gradle.api.Project import org.gradle.api.artifacts.UnknownConfigurationException import org.gradle.api.tasks.SourceSet import org.gradle.api.tasks.SourceSetContainer -import org.jetbrains.kotlin.gradle.dsl.KotlinJsProjectExtension import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.plugin.sources.DefaultKotlinSourceSet class WirePlugin : Plugin { @@ -270,7 +270,7 @@ class WirePlugin : Plugin { isJsOnly -> { val sourceSets = - project.extensions.getByType(KotlinJsProjectExtension::class.java).sourceSets + project.extensions.getByType(KotlinProjectExtension::class.java).sourceSets val sourceSet = (sourceSets.getByName("main") as DefaultKotlinSourceSet) project.dependencies.add(sourceSet.apiConfigurationName, runtimeDependency) } diff --git a/wire-gradle-plugin/src/test/kotlin/com/squareup/wire/gradle/WirePluginTest.kt b/wire-gradle-plugin/src/test/kotlin/com/squareup/wire/gradle/WirePluginTest.kt index 5565e19e48..8d09a92a91 100644 --- a/wire-gradle-plugin/src/test/kotlin/com/squareup/wire/gradle/WirePluginTest.kt +++ b/wire-gradle-plugin/src/test/kotlin/com/squareup/wire/gradle/WirePluginTest.kt @@ -1266,7 +1266,7 @@ class WirePluginTest { } assertThat(buildCacheDir.exists()).isFalse() - val generatedProto = "build/generated/source/wire/com/squareup/geology/Period.kt" + val generatedProto = "build/generated/source/wire/com/squareup/geology/Period.java" val fixtureRoot = File("src/test/projects/cache-relocation-1") val result = fixtureGradleRunner(fixtureRoot) @@ -1319,7 +1319,7 @@ class WirePluginTest { } assertThat(buildCacheDir.exists()).isFalse() - val generatedStatus = "build/generated/source/wire/com/google/rpc/Status.kt" + val generatedStatus = "build/generated/source/wire/com/google/rpc/Status.java" val fixtureRoot = File("src/test/projects/cache-source-relocation-1") val result = fixtureGradleRunner(fixtureRoot) diff --git a/wire-gradle-plugin/src/test/projects/cache-relocation-1/build.gradle b/wire-gradle-plugin/src/test/projects/cache-relocation-1/build.gradle index c33f6c7b57..d6c72cb929 100644 --- a/wire-gradle-plugin/src/test/projects/cache-relocation-1/build.gradle +++ b/wire-gradle-plugin/src/test/projects/cache-relocation-1/build.gradle @@ -1,7 +1,6 @@ buildscript { dependencies { classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion" - classpath libs.pluginz.kotlin } repositories { @@ -14,7 +13,6 @@ buildscript { } apply plugin: 'application' -apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' // The code in this test project should be identical to @@ -35,6 +33,6 @@ dependencies { } wire { - kotlin { + java { } } diff --git a/wire-gradle-plugin/src/test/projects/cache-relocation-2/build.gradle b/wire-gradle-plugin/src/test/projects/cache-relocation-2/build.gradle index 09df7f5971..5a63d86e86 100644 --- a/wire-gradle-plugin/src/test/projects/cache-relocation-2/build.gradle +++ b/wire-gradle-plugin/src/test/projects/cache-relocation-2/build.gradle @@ -1,7 +1,6 @@ buildscript { dependencies { classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion" - classpath libs.pluginz.kotlin } repositories { @@ -14,7 +13,6 @@ buildscript { } apply plugin: 'application' -apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' // The code in this test project should be identical to @@ -35,6 +33,6 @@ dependencies { } wire { - kotlin { + java { } } diff --git a/wire-gradle-plugin/src/test/projects/cache-source-relocation-1/build.gradle b/wire-gradle-plugin/src/test/projects/cache-source-relocation-1/build.gradle index 16a5bec382..d25aecd8ab 100644 --- a/wire-gradle-plugin/src/test/projects/cache-source-relocation-1/build.gradle +++ b/wire-gradle-plugin/src/test/projects/cache-source-relocation-1/build.gradle @@ -1,7 +1,6 @@ buildscript { dependencies { classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion" - classpath libs.pluginz.kotlin } repositories { @@ -14,7 +13,6 @@ buildscript { } apply plugin: 'application' -apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' // The code in this test project should be identical to @@ -36,6 +34,6 @@ wire { srcJar("com.google.api.grpc:proto-google-common-protos:2.57.0") include("google/rpc/status.proto") } - kotlin { + java { } } diff --git a/wire-gradle-plugin/src/test/projects/cache-source-relocation-2/build.gradle b/wire-gradle-plugin/src/test/projects/cache-source-relocation-2/build.gradle index 36b0c36863..21bc96026d 100644 --- a/wire-gradle-plugin/src/test/projects/cache-source-relocation-2/build.gradle +++ b/wire-gradle-plugin/src/test/projects/cache-source-relocation-2/build.gradle @@ -1,7 +1,6 @@ buildscript { dependencies { classpath "com.squareup.wire:wire-gradle-plugin:$wireVersion" - classpath libs.pluginz.kotlin } repositories { @@ -14,7 +13,6 @@ buildscript { } apply plugin: 'application' -apply plugin: 'org.jetbrains.kotlin.jvm' apply plugin: 'com.squareup.wire' // The code in this test project should be identical to @@ -36,6 +34,6 @@ wire { srcJar("com.google.api.grpc:proto-google-common-protos:2.57.0") include("google/rpc/status.proto") } - kotlin { + java { } } diff --git a/wire-schema/src/commonMain/kotlin/com/squareup/wire/schema/Service.kt b/wire-schema/src/commonMain/kotlin/com/squareup/wire/schema/Service.kt index 87d339381f..517f9e44c4 100644 --- a/wire-schema/src/commonMain/kotlin/com/squareup/wire/schema/Service.kt +++ b/wire-schema/src/commonMain/kotlin/com/squareup/wire/schema/Service.kt @@ -133,7 +133,9 @@ data class Service( ) } - @JvmStatic internal fun fromElements( + @JvmStatic + @JvmName("fromElements\$wire_schema") // Preserve the Kotlin 2.3 internal JVM name. + internal fun fromElements( packageName: String?, elements: List, ): List = elements.map { service -> @@ -141,7 +143,9 @@ data class Service( fromElement(protoType, service) } - @JvmStatic internal fun toElements(services: List): List = services.map { service -> + @JvmStatic + @JvmName("toElements\$wire_schema") // Preserve the Kotlin 2.3 internal JVM name. + internal fun toElements(services: List): List = services.map { service -> ServiceElement( service.location, service.name,