Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -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
Expand All @@ -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)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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<RpcIrContext> {
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) {
Expand Down
Original file line number Diff line number Diff line change
@@ -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<RpcIrContext> {
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
processor.visitClass(declaration, data)

return super.visitClass(declaration, data)
}
}
Original file line number Diff line number Diff line change
@@ -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<RpcIrContext> {
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
processor.visitClass(declaration, data)

return super.visitClass(declaration, data)
}
}
Original file line number Diff line number Diff line change
@@ -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<RpcIrContext> {
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
processor.visitClass(declaration, data)

return super.visitClass(declaration, data)
}
}
Original file line number Diff line number Diff line change
@@ -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<RpcIrContext>() {
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
processor.visitClass(declaration, data)

return super.visitClass(declaration, data)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
Expand Down
11 changes: 11 additions & 0 deletions gradle-conventions/empty/src/main/kotlin/util/npm.kt
Original file line number Diff line number Diff line change
@@ -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
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
/*
* 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

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() {
Expand Down Expand Up @@ -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<org.jetbrains.kotlin.gradle.targets.js.nodejs.NodeJsRootExtension> {
plugins.withType(NodeJsRootPlugin::class.java).configureEach {
rootProject.extensions.configure<NodeJsEnvSpec> {
download = true
if (useProxy) {
downloadBaseUrl = "https://packages.jetbrains.team/files/p/krpc/build-deps/"
Expand All @@ -71,8 +75,8 @@ fun Project.configureNpm() {
}

// necessary for CI js tests
rootProject.plugins.withType<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnPlugin> {
rootProject.extensions.configure<org.jetbrains.kotlin.gradle.targets.js.yarn.YarnRootExtension> {
rootProject.plugins.withType<YarnPlugin> {
rootProject.extensions.configure<YarnRootEnvSpec> {
ignoreScripts = false
download = true

Expand Down