From 2a378ec8379186fc811946454ac9a9e7205a6f57 Mon Sep 17 00:00:00 2001 From: Alexander Sysoev Date: Tue, 18 Mar 2025 16:51:53 +0100 Subject: [PATCH] Fix kotlin master compilation --- .../rpc/codegen/extension/RpcIrExtension.kt | 5 +++-- .../extension/RpcIrServiceProcessor.kt | 8 ++----- .../codegen/RpcIrServiceProcessorDelegate.kt | 21 +++++++++++++++++++ .../codegen/RpcIrServiceProcessorDelegate.kt | 21 +++++++++++++++++++ .../codegen/RpcIrServiceProcessorDelegate.kt | 21 +++++++++++++++++++ .../codegen/RpcIrServiceProcessorDelegate.kt | 21 +++++++++++++++++++ ...ons-version-resolution.settings.gradle.kts | 13 +++++++++--- .../empty/src/main/kotlin/util/npm.kt | 11 ++++++++++ .../src/main/kotlin/util/npm.kt | 14 ++++++++----- 9 files changed, 119 insertions(+), 16 deletions(-) create mode 100644 compiler-plugin/compiler-plugin-backend/src/main/latest/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt create mode 100644 compiler-plugin/compiler-plugin-backend/src/main/pre_2_0_10/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt create mode 100644 compiler-plugin/compiler-plugin-backend/src/main/pre_2_0_21/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt create mode 100644 compiler-plugin/compiler-plugin-backend/src/main/v_2_2/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt create mode 100644 gradle-conventions/empty/src/main/kotlin/util/npm.kt rename gradle-conventions/{common => latest-only}/src/main/kotlin/util/npm.kt (82%) diff --git a/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrExtension.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrExtension.kt index a52220643..877dec13c 100644 --- a/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrExtension.kt +++ b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrExtension.kt @@ -1,9 +1,10 @@ /* - * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. */ package kotlinx.rpc.codegen.extension +import kotlinx.rpc.codegen.RpcIrServiceProcessorDelegate import kotlinx.rpc.codegen.VersionSpecificApi import org.jetbrains.kotlin.backend.common.extensions.IrGenerationExtension import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext @@ -20,7 +21,7 @@ class RpcIrExtension(configuration: CompilerConfiguration) : IrGenerationExtensi ) { val context = RpcIrContext(pluginContext, VersionSpecificApi.INSTANCE) - val processor = RpcIrServiceProcessor(logger) + val processor = RpcIrServiceProcessorDelegate(RpcIrServiceProcessor(logger)) moduleFragment.transform(processor, context) } } diff --git a/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrServiceProcessor.kt b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrServiceProcessor.kt index f67762a41..22a9ee847 100644 --- a/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrServiceProcessor.kt +++ b/compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcIrServiceProcessor.kt @@ -6,22 +6,18 @@ package kotlinx.rpc.codegen.extension import kotlinx.rpc.codegen.common.RpcClassId import org.jetbrains.kotlin.cli.common.messages.MessageCollector -import org.jetbrains.kotlin.ir.IrStatement import org.jetbrains.kotlin.ir.declarations.IrClass import org.jetbrains.kotlin.ir.util.hasAnnotation import org.jetbrains.kotlin.ir.util.isInterface -import org.jetbrains.kotlin.ir.visitors.IrElementTransformer internal class RpcIrServiceProcessor( @Suppress("unused") private val logger: MessageCollector, -) : IrElementTransformer { - override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement { +) { + fun visitClass(declaration: IrClass, data: RpcIrContext) { if (declaration.hasAnnotation(RpcClassId.rpcAnnotation) && declaration.isInterface) { processService(declaration, data) } - - return super.visitClass(declaration, data) } private fun processService(service: IrClass, context: RpcIrContext) { diff --git a/compiler-plugin/compiler-plugin-backend/src/main/latest/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt b/compiler-plugin/compiler-plugin-backend/src/main/latest/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt new file mode 100644 index 000000000..0b9c1f0ac --- /dev/null +++ b/compiler-plugin/compiler-plugin-backend/src/main/latest/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.rpc.codegen + +import kotlinx.rpc.codegen.extension.RpcIrContext +import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor +import org.jetbrains.kotlin.ir.IrStatement +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.visitors.IrElementTransformer + +internal class RpcIrServiceProcessorDelegate( + val processor: RpcIrServiceProcessor, +) : IrElementTransformer { + override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement { + processor.visitClass(declaration, data) + + return super.visitClass(declaration, data) + } +} diff --git a/compiler-plugin/compiler-plugin-backend/src/main/pre_2_0_10/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt b/compiler-plugin/compiler-plugin-backend/src/main/pre_2_0_10/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt new file mode 100644 index 000000000..0b9c1f0ac --- /dev/null +++ b/compiler-plugin/compiler-plugin-backend/src/main/pre_2_0_10/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.rpc.codegen + +import kotlinx.rpc.codegen.extension.RpcIrContext +import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor +import org.jetbrains.kotlin.ir.IrStatement +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.visitors.IrElementTransformer + +internal class RpcIrServiceProcessorDelegate( + val processor: RpcIrServiceProcessor, +) : IrElementTransformer { + override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement { + processor.visitClass(declaration, data) + + return super.visitClass(declaration, data) + } +} diff --git a/compiler-plugin/compiler-plugin-backend/src/main/pre_2_0_21/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt b/compiler-plugin/compiler-plugin-backend/src/main/pre_2_0_21/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt new file mode 100644 index 000000000..0b9c1f0ac --- /dev/null +++ b/compiler-plugin/compiler-plugin-backend/src/main/pre_2_0_21/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.rpc.codegen + +import kotlinx.rpc.codegen.extension.RpcIrContext +import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor +import org.jetbrains.kotlin.ir.IrStatement +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.visitors.IrElementTransformer + +internal class RpcIrServiceProcessorDelegate( + val processor: RpcIrServiceProcessor, +) : IrElementTransformer { + override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement { + processor.visitClass(declaration, data) + + return super.visitClass(declaration, data) + } +} diff --git a/compiler-plugin/compiler-plugin-backend/src/main/v_2_2/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt b/compiler-plugin/compiler-plugin-backend/src/main/v_2_2/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt new file mode 100644 index 000000000..6f5a61a56 --- /dev/null +++ b/compiler-plugin/compiler-plugin-backend/src/main/v_2_2/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package kotlinx.rpc.codegen + +import kotlinx.rpc.codegen.extension.RpcIrContext +import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor +import org.jetbrains.kotlin.ir.IrStatement +import org.jetbrains.kotlin.ir.declarations.IrClass +import org.jetbrains.kotlin.ir.visitors.IrTransformer + +internal class RpcIrServiceProcessorDelegate( + val processor: RpcIrServiceProcessor, +) : IrTransformer() { + override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement { + processor.visitClass(declaration, data) + + return super.visitClass(declaration, data) + } +} diff --git a/gradle-conventions-settings/src/main/kotlin/conventions-version-resolution.settings.gradle.kts b/gradle-conventions-settings/src/main/kotlin/conventions-version-resolution.settings.gradle.kts index d24b66bb7..0f07e7fd6 100644 --- a/gradle-conventions-settings/src/main/kotlin/conventions-version-resolution.settings.gradle.kts +++ b/gradle-conventions-settings/src/main/kotlin/conventions-version-resolution.settings.gradle.kts @@ -222,15 +222,22 @@ dependencyResolutionManagement { // Other Kotlin-dependant versions val (lookupTable, latestKotlin) = loadLookupTable(rootDir, kotlinVersion) - val isLatestKotlin = latestKotlin == kotlinVersion + val kotlinVersionParsed = kotlinVersion.kotlinVersionParsed() + val latestKotlinParsed = latestKotlin.kotlinVersionParsed() - extra["kotlinVersion"] = kotlinVersion.kotlinVersionParsed() + val isLatestKotlin = kotlinVersionParsed.isAtLeast( + major = latestKotlinParsed.major, + minor = latestKotlinParsed.minor, + patch = latestKotlinParsed.patch + ) + + extra["kotlinVersion"] = kotlinVersionParsed extra["kotlinCompilerVersion"] = compilerVersion.kotlinVersionParsed() extra["isLatestKotlinVersion"] = isLatestKotlin gradle.rootProject { allprojects { - this.extra["kotlinVersion"] = kotlinVersion.kotlinVersionParsed() + this.extra["kotlinVersion"] = kotlinVersionParsed this.extra["kotlinCompilerVersion"] = compilerVersion.kotlinVersionParsed() this.extra["isLatestKotlinVersion"] = isLatestKotlin } diff --git a/gradle-conventions/empty/src/main/kotlin/util/npm.kt b/gradle-conventions/empty/src/main/kotlin/util/npm.kt new file mode 100644 index 000000000..ecd985bca --- /dev/null +++ b/gradle-conventions/empty/src/main/kotlin/util/npm.kt @@ -0,0 +1,11 @@ +/* + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + */ + +package util + +import org.gradle.api.Project + +fun Project.configureNpm() { + // only for latest +} diff --git a/gradle-conventions/common/src/main/kotlin/util/npm.kt b/gradle-conventions/latest-only/src/main/kotlin/util/npm.kt similarity index 82% rename from gradle-conventions/common/src/main/kotlin/util/npm.kt rename to gradle-conventions/latest-only/src/main/kotlin/util/npm.kt index 6f562cbf3..5f791f4e3 100644 --- a/gradle-conventions/common/src/main/kotlin/util/npm.kt +++ b/gradle-conventions/latest-only/src/main/kotlin/util/npm.kt @@ -1,5 +1,5 @@ /* - * Copyright 2023-2024 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. + * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license. */ package util @@ -7,7 +7,11 @@ package util import org.gradle.api.GradleException import org.gradle.api.Project import org.gradle.kotlin.dsl.* +import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsEnvSpec +import org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnLockMismatchReport +import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin +import org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootEnvSpec import java.io.File fun Project.configureNpm() { @@ -57,8 +61,8 @@ fun Project.configureNpm() { val useProxy = useProxyRepositories - plugins.withType(org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootPlugin::class.java).configureEach { - rootProject.extensions.configure { + plugins.withType(NodeJsRootPlugin::class.java).configureEach { + rootProject.extensions.configure { download = true if (useProxy) { downloadBaseUrl = "https://packages.jetbrains.team/files/p/krpc/build-deps/" @@ -71,8 +75,8 @@ fun Project.configureNpm() { } // necessary for CI js tests - rootProject.plugins.withType { - rootProject.extensions.configure { + rootProject.plugins.withType { + rootProject.extensions.configure { ignoreScripts = false download = true