Skip to content

Commit 08434d8

Browse files
authored
Update Kotlin to 2.2.0 (#359)
1 parent 2b2740b commit 08434d8

File tree

53 files changed

+3297
-169
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

53 files changed

+3297
-169
lines changed

.idea/kotlinx-rpc.iml

Lines changed: 2 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

README.md

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77

88
[![Kotlin Experimental](https://kotl.in/badges/experimental.svg)](https://kotlinlang.org/docs/components-stability.html)
99
[![Official JetBrains project](http://jb.gg/badges/official.svg)](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
10-
[![Kotlin](https://img.shields.io/badge/kotlin-2.0.0--2.1.21-blue.svg?logo=kotlin)](http://kotlinlang.org)
10+
[![Kotlin](https://img.shields.io/badge/kotlin-2.0.0--2.2.0-blue.svg?logo=kotlin)](http://kotlinlang.org)
1111
[![GitHub License](https://img.shields.io/badge/license-Apache%20License%202.0-blue.svg?style=flat)](http://www.apache.org/licenses/LICENSE-2.0)
1212

1313
[//]: # ([![TeamCity build](https://img.shields.io/teamcity/build/s/Build_kRPC_All.svg?server=http%3A%2F%2Fkrpc.teamcity.com)](https://teamcity.jetbrains.com/viewType.html?buildTypeId=Build_kRPC_All&guest=1))
@@ -102,6 +102,7 @@ To ensure that all IDE features of our compiler plugin work properly on IntelliJ
102102
We support all stable Kotlin versions starting from 2.0.0:
103103
- 2.0.0, 2.0.10, 2.0.20, 2.0.21
104104
- 2.1.0, 2.1.10, 2.1.20, 2.1.21
105+
- 2.2.0
105106

106107
For a full compatibility checklist,
107108
see [Versions](https://kotlin.github.io/kotlinx-rpc/versions.html).
@@ -133,8 +134,8 @@ that will set up code generation in a project.
133134
Example of a setup in a project's `build.gradle.kts`:
134135
```kotlin
135136
plugins {
136-
kotlin("multiplatform") version "2.1.21"
137-
kotlin("plugin.serialization") version "2.1.21"
137+
kotlin("multiplatform") version "2.2.0"
138+
kotlin("plugin.serialization") version "2.2.0"
138139
id("org.jetbrains.kotlinx.rpc.plugin") version "0.7.0"
139140
}
140141
```

build.gradle.kts

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@
44

55
import org.jetbrains.kotlin.gradle.plugin.getKotlinPluginVersion
66
import util.asDokkaVersion
7-
import util.configureApiValidation
87
import util.configureNpm
98
import util.configureProjectReport
109
import util.registerDumpPlatformTableTask
@@ -80,7 +79,6 @@ dependencies {
8079

8180
configureProjectReport()
8281
configureNpm()
83-
configureApiValidation()
8482

8583
registerDumpPlatformTableTask()
8684
registerVerifyPlatformTableTask()

compiler-plugin/compiler-plugin-backend/src/main/latest/kotlinx/rpc/codegen/RpcIrServiceProcessorDelegate.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import kotlinx.rpc.codegen.extension.RpcIrContext
88
import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor
99
import org.jetbrains.kotlin.ir.IrStatement
1010
import org.jetbrains.kotlin.ir.declarations.IrClass
11-
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
11+
import org.jetbrains.kotlin.ir.visitors.IrTransformer
1212

1313
internal class RpcIrServiceProcessorDelegate(
1414
val processor: RpcIrServiceProcessor,
15-
) : IrElementTransformer<RpcIrContext> {
15+
) : IrTransformer<RpcIrContext>() {
1616
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
1717
processor.visitClass(declaration, data)
1818

compiler-plugin/compiler-plugin-backend/src/main/latest/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt

Lines changed: 22 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,12 @@
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
66

77
import kotlinx.rpc.codegen.extension.IrMemberAccessExpressionData
8-
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
98
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
10-
import org.jetbrains.kotlin.backend.common.ir.addExtensionReceiver
9+
import org.jetbrains.kotlin.backend.common.ir.createExtensionReceiver
1110
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
1211
import org.jetbrains.kotlin.config.CommonConfigurationKeys
1312
import org.jetbrains.kotlin.config.CompilerConfigurationKey
@@ -17,6 +16,7 @@ import org.jetbrains.kotlin.ir.declarations.*
1716
import org.jetbrains.kotlin.ir.expressions.IrCall
1817
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
1918
import org.jetbrains.kotlin.ir.expressions.IrExpression
19+
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
2020
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
2121
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
2222
import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
@@ -65,7 +65,7 @@ object VersionSpecificApiImpl : VersionSpecificApi {
6565
get() = parameters
6666

6767
override val IrConstructorCall.argumentsVS: List<IrExpression?>
68-
get() = arguments
68+
get() = arguments.toList()
6969

7070
override fun IrType.isNullableVS(): Boolean {
7171
return isNullable()
@@ -99,7 +99,7 @@ object VersionSpecificApiImpl : VersionSpecificApi {
9999
}
100100

101101
override fun IrSimpleFunction.addExtensionReceiverVS(type: IrType, origin: IrDeclarationOrigin): IrValueParameter {
102-
return addExtensionReceiver(type, origin)
102+
return createExtensionReceiver(type, origin)
103103
}
104104

105105
override val messageCollectorKey: CompilerConfigurationKey<MessageCollector>
@@ -150,34 +150,41 @@ object VersionSpecificApiImpl : VersionSpecificApi {
150150
}
151151

152152
override fun IrFunction.valueParametersVS(): List<IrValueParameter> {
153-
return valueParameters
153+
return parameters.filter { it.kind == IrParameterKind.Regular }
154154
}
155155

156156
override val IrFunction.extensionReceiverParameterVS: IrValueParameter?
157-
get() = extensionReceiverParameter
157+
get() = parameters.firstOrNull { it.kind == IrParameterKind.ExtensionReceiver }
158158

159159
override var IrFunction.dispatchReceiverParameterVS: IrValueParameter?
160160
get() = dispatchReceiverParameter
161161
set(value) {
162-
dispatchReceiverParameter = value
162+
if (value != null) {
163+
parameters += value
164+
}
163165
}
164166

165-
166167
override fun IrMemberAccessExpressionData.buildFor(access: IrMemberAccessExpression<*>) {
167-
if (dispatchReceiver != null) {
168-
access.dispatchReceiver = dispatchReceiver
168+
var offset = if (dispatchReceiver != null) {
169+
access.arguments[0] = dispatchReceiver
170+
1
171+
} else {
172+
0
169173
}
170174

171-
if (extensionReceiver != null) {
172-
access.extensionReceiver = extensionReceiver
175+
offset += if (extensionReceiver != null) {
176+
access.arguments[offset] = extensionReceiver
177+
1
178+
} else {
179+
0
173180
}
174181

175182
valueArguments.forEachIndexed { index, irExpression ->
176-
access.putValueArgument(index, irExpression)
183+
access.arguments[offset + index] = irExpression
177184
}
178185

179186
typeArguments.forEachIndexed { index, irType ->
180-
access.putTypeArgument(index, irType)
187+
access.typeArguments[index] = irType
181188
}
182189
}
183190
}
Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@ import kotlinx.rpc.codegen.extension.RpcIrContext
88
import kotlinx.rpc.codegen.extension.RpcIrServiceProcessor
99
import org.jetbrains.kotlin.ir.IrStatement
1010
import org.jetbrains.kotlin.ir.declarations.IrClass
11-
import org.jetbrains.kotlin.ir.visitors.IrTransformer
11+
import org.jetbrains.kotlin.ir.visitors.IrElementTransformer
1212

1313
internal class RpcIrServiceProcessorDelegate(
1414
val processor: RpcIrServiceProcessor,
15-
) : IrTransformer<RpcIrContext>() {
15+
) : IrElementTransformer<RpcIrContext> {
1616
override fun visitClass(declaration: IrClass, data: RpcIrContext): IrStatement {
1717
processor.visitClass(declaration, data)
1818

compiler-plugin/compiler-plugin-backend/src/main/v_2_2/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt renamed to compiler-plugin/compiler-plugin-backend/src/main/pre_2_1_21/kotlinx/rpc/codegen/VersionSpecificApiImpl.kt

Lines changed: 15 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
/*
2-
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
2+
* Copyright 2023-2024 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
66

77
import kotlinx.rpc.codegen.extension.IrMemberAccessExpressionData
8+
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
89
import org.jetbrains.kotlin.backend.common.extensions.IrPluginContext
9-
import org.jetbrains.kotlin.backend.common.ir.createExtensionReceiver
10+
import org.jetbrains.kotlin.backend.common.ir.addExtensionReceiver
1011
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
1112
import org.jetbrains.kotlin.config.CommonConfigurationKeys
1213
import org.jetbrains.kotlin.config.CompilerConfigurationKey
@@ -16,7 +17,6 @@ import org.jetbrains.kotlin.ir.declarations.*
1617
import org.jetbrains.kotlin.ir.expressions.IrCall
1718
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
1819
import org.jetbrains.kotlin.ir.expressions.IrExpression
19-
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
2020
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
2121
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
2222
import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
@@ -65,7 +65,7 @@ object VersionSpecificApiImpl : VersionSpecificApi {
6565
get() = parameters
6666

6767
override val IrConstructorCall.argumentsVS: List<IrExpression?>
68-
get() = arguments.toList()
68+
get() = arguments
6969

7070
override fun IrType.isNullableVS(): Boolean {
7171
return isNullable()
@@ -99,7 +99,7 @@ object VersionSpecificApiImpl : VersionSpecificApi {
9999
}
100100

101101
override fun IrSimpleFunction.addExtensionReceiverVS(type: IrType, origin: IrDeclarationOrigin): IrValueParameter {
102-
return createExtensionReceiver(type, origin)
102+
return addExtensionReceiver(type, origin)
103103
}
104104

105105
override val messageCollectorKey: CompilerConfigurationKey<MessageCollector>
@@ -150,41 +150,34 @@ object VersionSpecificApiImpl : VersionSpecificApi {
150150
}
151151

152152
override fun IrFunction.valueParametersVS(): List<IrValueParameter> {
153-
return parameters.filter { it.kind == IrParameterKind.Regular }
153+
return valueParameters
154154
}
155155

156156
override val IrFunction.extensionReceiverParameterVS: IrValueParameter?
157-
get() = parameters.firstOrNull { it.kind == IrParameterKind.ExtensionReceiver }
157+
get() = extensionReceiverParameter
158158

159159
override var IrFunction.dispatchReceiverParameterVS: IrValueParameter?
160160
get() = dispatchReceiverParameter
161161
set(value) {
162-
if (value != null) {
163-
parameters += value
164-
}
162+
dispatchReceiverParameter = value
165163
}
166164

165+
167166
override fun IrMemberAccessExpressionData.buildFor(access: IrMemberAccessExpression<*>) {
168-
var offset = if (dispatchReceiver != null) {
169-
access.arguments[0] = dispatchReceiver
170-
1
171-
} else {
172-
0
167+
if (dispatchReceiver != null) {
168+
access.dispatchReceiver = dispatchReceiver
173169
}
174170

175-
offset += if (extensionReceiver != null) {
176-
access.arguments[offset] = extensionReceiver
177-
1
178-
} else {
179-
0
171+
if (extensionReceiver != null) {
172+
access.extensionReceiver = extensionReceiver
180173
}
181174

182175
valueArguments.forEachIndexed { index, irExpression ->
183-
access.arguments[offset + index] = irExpression
176+
access.putValueArgument(index, irExpression)
184177
}
185178

186179
typeArguments.forEachIndexed { index, irType ->
187-
access.typeArguments[index] = irType
180+
access.putTypeArgument(index, irType)
188181
}
189182
}
190183
}

compiler-plugin/compiler-plugin-k2/src/main/latest/kotlinx/rpc/codegen/FirVersionSpecificApiImpl.kt

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -7,21 +7,22 @@ package kotlinx.rpc.codegen
77
import org.jetbrains.kotlin.KtSourceElement
88
import org.jetbrains.kotlin.fir.FirSession
99
import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClassSymbol
10-
import org.jetbrains.kotlin.fir.declarations.FirFunction
11-
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
10+
import org.jetbrains.kotlin.fir.declarations.declaredFunctions
11+
import org.jetbrains.kotlin.fir.declarations.constructors
1212
import org.jetbrains.kotlin.fir.resolve.toClassSymbol
1313
import org.jetbrains.kotlin.fir.resolve.toRegularClassSymbol
14-
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
15-
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
1614
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
17-
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
18-
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
19-
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
2015
import org.jetbrains.kotlin.fir.toFirResolvedTypeRef
2116
import org.jetbrains.kotlin.fir.types.ConeKotlinType
2217
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
2318
import org.jetbrains.kotlin.fir.types.FirTypeRef
2419
import org.jetbrains.kotlin.fir.types.builder.FirResolvedTypeRefBuilder
20+
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
21+
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
22+
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
23+
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
24+
import org.jetbrains.kotlin.fir.declarations.processAllDeclarations
25+
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
2526

2627
object FirVersionSpecificApiImpl : FirVersionSpecificApi {
2728
override fun ConeKotlinType.toFirResolvedTypeRefVS(
@@ -41,19 +42,20 @@ object FirVersionSpecificApiImpl : FirVersionSpecificApi {
4142
coneType = value
4243
}
4344

44-
override fun FirClassSymbol<*>.declaredFunctionsVS(session: FirSession): List<FirFunctionSymbol<FirFunction>> {
45-
@OptIn(SymbolInternals::class)
46-
return fir.declarations
47-
.filterIsInstance<FirFunction>()
48-
.map { it.symbol }
45+
override fun FirClassSymbol<*>.declaredFunctionsVS(session: FirSession): List<FirFunctionSymbol<*>> {
46+
return declaredFunctions(session)
4947
}
5048

5149
override fun FirRegularClassSymbol.constructorsVS(session: FirSession): List<FirConstructorSymbol> {
52-
return declarationSymbols.filterIsInstance<FirConstructorSymbol>()
50+
return constructors(session)
5351
}
5452

5553
override fun FirRegularClass.declarationsVS(session: FirSession): List<FirBasedSymbol<*>> {
56-
return declarations.map { it.symbol }
54+
val declarations = mutableListOf<FirBasedSymbol<*>>()
55+
processAllDeclarations(session) { symbol ->
56+
declarations.add(symbol)
57+
}
58+
return declarations
5759
}
5860

5961
override val FirResolvedTypeRef.coneTypeVS: ConeKotlinType get() = coneType

compiler-plugin/compiler-plugin-k2/src/main/latest/kotlinx/rpc/codegen/checkers/FirRpcCheckersVS.kt

Lines changed: 14 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,51 +22,58 @@ import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
2222
class FirCheckedAnnotationFunctionCallCheckerVS(
2323
private val ctx: FirCheckersContext,
2424
) : FirFunctionCallChecker(MppCheckerKind.Common) {
25-
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
25+
context(context: CheckerContext, reporter: DiagnosticReporter)
26+
override fun check(expression: FirFunctionCall) {
2627
FirCheckedAnnotationFunctionCallChecker.check(ctx, expression, context, reporter)
2728
}
2829
}
2930

3031
class FirCheckedAnnotationTypeParameterCheckerVS(
3132
private val ctx: FirCheckersContext,
3233
) : FirTypeParameterChecker(MppCheckerKind.Common) {
33-
override fun check(declaration: FirTypeParameter, context: CheckerContext, reporter: DiagnosticReporter) {
34+
context(context: CheckerContext, reporter: DiagnosticReporter)
35+
override fun check(declaration: FirTypeParameter) {
3436
FirCheckedAnnotationTypeParameterChecker.check(ctx, declaration, context, reporter)
3537
}
3638
}
3739

3840
class FirCheckedAnnotationFirClassCheckerVS(
3941
private val ctx: FirCheckersContext,
4042
) : FirClassChecker(MppCheckerKind.Common) {
41-
override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
43+
context(context: CheckerContext, reporter: DiagnosticReporter)
44+
override fun check(declaration: FirClass) {
4245
FirCheckedAnnotationFirClassChecker.check(ctx, declaration, context, reporter)
4346
}
4447
}
4548

4649
class FirCheckedAnnotationFirFunctionCheckerVS(
4750
private val ctx: FirCheckersContext,
4851
) : FirFunctionChecker(MppCheckerKind.Common) {
49-
override fun check(declaration: FirFunction, context: CheckerContext, reporter: DiagnosticReporter) {
52+
context(context: CheckerContext, reporter: DiagnosticReporter)
53+
override fun check(declaration: FirFunction) {
5054
FirCheckedAnnotationFirFunctionChecker.check(ctx, declaration, context, reporter)
5155
}
5256
}
5357

5458
class FirRpcAnnotationCheckerVS : FirRegularClassChecker(MppCheckerKind.Common) {
55-
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
59+
context(context: CheckerContext, reporter: DiagnosticReporter)
60+
override fun check(declaration: FirRegularClass) {
5661
FirRpcAnnotationChecker.check(declaration, context, reporter)
5762
}
5863
}
5964

6065
class FirRpcServiceDeclarationCheckerVS(
6166
private val ctx: FirCheckersContext,
6267
) : FirRegularClassChecker(MppCheckerKind.Common) {
63-
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
68+
context(context: CheckerContext, reporter: DiagnosticReporter)
69+
override fun check(declaration: FirRegularClass) {
6470
FirRpcServiceDeclarationChecker.check(ctx, declaration, context, reporter)
6571
}
6672
}
6773

6874
class FirRpcStrictModeClassCheckerVS : FirRegularClassChecker(MppCheckerKind.Common) {
69-
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
75+
context(context: CheckerContext, reporter: DiagnosticReporter)
76+
override fun check(declaration: FirRegularClass) {
7077
FirRpcStrictModeClassChecker.check(declaration, context, reporter)
7178
}
7279
}

0 commit comments

Comments
 (0)