Skip to content

Commit 18afcd3

Browse files
authored
Fix kotlin master compilation (#306)
1 parent 87179d8 commit 18afcd3

File tree

9 files changed

+119
-16
lines changed

9 files changed

+119
-16
lines changed

Diff for: compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrExtension.kt

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
/*
2-
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
33
*/
44

55
package kotlinx.rpc.codegen.extension
66

7+
import kotlinx.rpc.codegen.RpcIrServiceProcessorDelegate
78
import kotlinx.rpc.codegen.VersionSpecificApi
89
import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension
910
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
@@ -20,7 +21,7 @@ class RpcIrExtension(configuration: CompilerConfiguration) : IrGenerationExtensi
2021
) {
2122
val context = RpcIrContext(pluginContext, VersionSpecificApi.INSTANCE)
2223

23-
val processor = RpcIrServiceProcessor(logger)
24+
val processor = RpcIrServiceProcessorDelegate(RpcIrServiceProcessor(logger))
2425
moduleFragment.transform(processor, context)
2526
}
2627
}

Diff for: compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrServiceProcessor.kt

+2-6
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,18 @@ package kotlinx.rpc.codegen.extension
66

77
import kotlinx.rpc.codegen.common.RpcClassId
88
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
9-
import org.jetbrains.kotlin.ir.IrStatement
109
import org.jetbrains.kotlin.ir.declarations.IrClass
1110
import org.jetbrains.kotlin.ir.util.hasAnnotation
1211
import org.jetbrains.kotlin.ir.util.isInterface
13-
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
1412

1513
internal class RpcIrServiceProcessor(
1614
@Suppress("unused")
1715
private val logger: MessageCollector,
18-
) : IrElementTransformer<RpcIrContext> {
19-
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
16+
) {
17+
fun visitClass(declaration: IrClass, data: RpcIrContext) {
2018
if (declaration.hasAnnotation(RpcClassId.rpcAnnotation) && declaration.isInterface) {
2119
processService(declaration, data)
2220
}
23-
24-
return super.visitClass(declaration, data)
2521
}
2622

2723
private fun processService(service: IrClass, context: RpcIrContext) {
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.codegen
6+
7+
import kotlinx.rpc.codegen.extension.RpcIrContext
8+
import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor
9+
import org.jetbrains.kotlin.ir.IrStatement
10+
import org.jetbrains.kotlin.ir.declarations.IrClass
11+
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
12+
13+
internal class RpcIrServiceProcessorDelegate(
14+
val processor: RpcIrServiceProcessor,
15+
) : IrElementTransformer<RpcIrContext> {
16+
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
17+
processor.visitClass(declaration, data)
18+
19+
return super.visitClass(declaration, data)
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.codegen
6+
7+
import kotlinx.rpc.codegen.extension.RpcIrContext
8+
import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor
9+
import org.jetbrains.kotlin.ir.IrStatement
10+
import org.jetbrains.kotlin.ir.declarations.IrClass
11+
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
12+
13+
internal class RpcIrServiceProcessorDelegate(
14+
val processor: RpcIrServiceProcessor,
15+
) : IrElementTransformer<RpcIrContext> {
16+
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
17+
processor.visitClass(declaration, data)
18+
19+
return super.visitClass(declaration, data)
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.codegen
6+
7+
import kotlinx.rpc.codegen.extension.RpcIrContext
8+
import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor
9+
import org.jetbrains.kotlin.ir.IrStatement
10+
import org.jetbrains.kotlin.ir.declarations.IrClass
11+
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
12+
13+
internal class RpcIrServiceProcessorDelegate(
14+
val processor: RpcIrServiceProcessor,
15+
) : IrElementTransformer<RpcIrContext> {
16+
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
17+
processor.visitClass(declaration, data)
18+
19+
return super.visitClass(declaration, data)
20+
}
21+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package kotlinx.rpc.codegen
6+
7+
import kotlinx.rpc.codegen.extension.RpcIrContext
8+
import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor
9+
import org.jetbrains.kotlin.ir.IrStatement
10+
import org.jetbrains.kotlin.ir.declarations.IrClass
11+
import org.jetbrains.kotlin.ir.visitors.IrTransformer
12+
13+
internal class RpcIrServiceProcessorDelegate(
14+
val processor: RpcIrServiceProcessor,
15+
) : IrTransformer<RpcIrContext>() {
16+
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
17+
processor.visitClass(declaration, data)
18+
19+
return super.visitClass(declaration, data)
20+
}
21+
}

Diff for: gradle-conventions-settings/src/main/kotlin/conventions-version-resolution.settings.gradle.kts

+10-3
Original file line numberDiff line numberDiff line change
@@ -222,15 +222,22 @@ dependencyResolutionManagement {
222222
// Other Kotlin-dependant versions
223223
val (lookupTable, latestKotlin) = loadLookupTable(rootDir, kotlinVersion)
224224

225-
val isLatestKotlin = latestKotlin == kotlinVersion
225+
val kotlinVersionParsed = kotlinVersion.kotlinVersionParsed()
226+
val latestKotlinParsed = latestKotlin.kotlinVersionParsed()
226227

227-
extra["kotlinVersion"] = kotlinVersion.kotlinVersionParsed()
228+
val isLatestKotlin = kotlinVersionParsed.isAtLeast(
229+
major = latestKotlinParsed.major,
230+
minor = latestKotlinParsed.minor,
231+
patch = latestKotlinParsed.patch
232+
)
233+
234+
extra["kotlinVersion"] = kotlinVersionParsed
228235
extra["kotlinCompilerVersion"] = compilerVersion.kotlinVersionParsed()
229236
extra["isLatestKotlinVersion"] = isLatestKotlin
230237

231238
gradle.rootProject {
232239
allprojects {
233-
this.extra["kotlinVersion"] = kotlinVersion.kotlinVersionParsed()
240+
this.extra["kotlinVersion"] = kotlinVersionParsed
234241
this.extra["kotlinCompilerVersion"] = compilerVersion.kotlinVersionParsed()
235242
this.extra["isLatestKotlinVersion"] = isLatestKotlin
236243
}

Diff for: gradle-conventions/empty/src/main/kotlin/util/npm.kt

+11
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/*
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3+
*/
4+
5+
package util
6+
7+
import org.gradle.api.Project
8+
9+
fun Project.configureNpm() {
10+
// only for latest
11+
}

Diff for: gradle-conventions/common/src/main/kotlin/util/npm.kt renamed to gradle-conventions/latest-only/src/main/kotlin/util/npm.kt

+9-5
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,17 @@
11
/*
2-
* Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
2+
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
33
*/
44

55
package util
66

77
import org.gradle.api.GradleException
88
import org.gradle.api.Project
99
import org.gradle.kotlin.dsl.*
10+
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsEnvSpec
11+
import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin
1012
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockMismatchReport
13+
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin
14+
import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootEnvSpec
1115
import java.io.File
1216

1317
fun Project.configureNpm() {
@@ -57,8 +61,8 @@ fun Project.configureNpm() {
5761

5862
val useProxy = useProxyRepositories
5963

60-
plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin::class.java).configureEach {
61-
rootProject.extensions.configure<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension> {
64+
plugins.withType(NodeJsRootPlugin::class.java).configureEach {
65+
rootProject.extensions.configure<NodeJsEnvSpec> {
6266
download = true
6367
if (useProxy) {
6468
downloadBaseUrl = "https://packages.jetbrains.team/files/p/krpc/build-deps/"
@@ -71,8 +75,8 @@ fun Project.configureNpm() {
7175
}
7276

7377
// necessary for CI js tests
74-
rootProject.plugins.withType<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin> {
75-
rootProject.extensions.configure<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension> {
78+
rootProject.plugins.withType<YarnPlugin> {
79+
rootProject.extensions.configure<YarnRootEnvSpec> {
7680
ignoreScripts = false
7781
download = true
7882

0 commit comments

Comments
 (0)