Skip to content

Commit b604652

Browse files
committed
Fix all compiler versions
1 parent daf9e25 commit b604652

File tree

15 files changed

+95
-58
lines changed

15 files changed

+95
-58
lines changed

compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/VersionSpecificApi.kt

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.descriptors.SourceElement
1414
import org.jetbrains.kotlin.ir.builders.declarations.IrFieldBuilder
1515
import org.jetbrains.kotlin.ir.declarations.*
1616
import org.jetbrains.kotlin.ir.expressions.IrCall
17+
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
18+
import org.jetbrains.kotlin.ir.expressions.IrExpression
1719
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
1820
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
1921
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
@@ -53,6 +55,12 @@ interface VersionSpecificApi {
5355

5456
var IrConstructor.isPrimaryVS: Boolean
5557

58+
val IrConstructor.parametersVS: List<IrValueParameter>
59+
60+
val IrConstructorCall.argumentsVS: List<IrExpression?>
61+
62+
fun IrType.isNullableVS(): Boolean
63+
5664
val messageCollectorKey: CompilerConfigurationKey<MessageCollector>
5765

5866
companion object {

compiler-plugin/compiler-plugin-backend/src/main/core/kotlinx/rpc/codegen/extension/RpcStubGenerator.kt

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
2222
import org.jetbrains.kotlin.ir.symbols.IrSymbol
2323
import org.jetbrains.kotlin.ir.symbols.IrValueSymbol
2424
import org.jetbrains.kotlin.ir.types.*
25-
import org.jetbrains.kotlin.ir.util.isNullable
2625
import org.jetbrains.kotlin.ir.util.*
2726
import org.jetbrains.kotlin.name.Name
2827
import org.jetbrains.kotlin.name.SpecialNames
@@ -603,7 +602,7 @@ internal class RpcStubGenerator(
603602
}
604603
}
605604

606-
if (arg.type.isNullable()) {
605+
if (vsApi { arg.type.isNullableVS() }) {
607606
+irSafeAs(parameter, arg.type)
608607
} else {
609608
+irAs(parameter, arg.type)
@@ -1061,7 +1060,7 @@ internal class RpcStubGenerator(
10611060
elements = type.annotations
10621061
.filter { it.type.isSerializableAnnotation() }
10631062
.memoryOptimizedMap {
1064-
val kClassValue = it.arguments.singleOrNull()
1063+
val kClassValue = vsApi { it.argumentsVS }.singleOrNull()
10651064
as? IrClassReference
10661065
?: error("Expected single not null value parameter of KSerializer::class for @Serializable annotation on type '${type.dumpKotlinLike()}'")
10671066

@@ -1089,10 +1088,10 @@ internal class RpcStubGenerator(
10891088
val constructor = classSymbol.owner.primaryConstructor
10901089
?: error("Expected primary constructor for a serializer '${dumpKotlinLike()}'")
10911090

1092-
if (constructor.parameters.isNotEmpty()) {
1091+
if (vsApi { constructor.parametersVS.isNotEmpty() }) {
10931092
error(
10941093
"Primary constructor for a serializer '${dumpKotlinLike()}' can't have parameters: " +
1095-
constructor.parameters.joinToString { it.dumpKotlinLike() }
1094+
vsApi { constructor.parametersVS }.joinToString { it.dumpKotlinLike() }
10961095
)
10971096
}
10981097

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,8 @@ import org.jetbrains.kotlin.descriptors.SourceElement
1515
import org.jetbrains.kotlin.ir.builders.declarations.IrFieldBuilder
1616
import org.jetbrains.kotlin.ir.declarations.*
1717
import org.jetbrains.kotlin.ir.expressions.IrCall
18+
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
19+
import org.jetbrains.kotlin.ir.expressions.IrExpression
1820
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
1921
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
2022
import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
@@ -23,6 +25,7 @@ import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
2325
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
2426
import org.jetbrains.kotlin.ir.types.IrType
2527
import org.jetbrains.kotlin.ir.util.copyTo
28+
import org.jetbrains.kotlin.ir.util.isNullable
2629
import org.jetbrains.kotlin.name.CallableId
2730
import org.jetbrains.kotlin.name.ClassId
2831
import org.jetbrains.kotlin.name.FqName
@@ -58,6 +61,16 @@ object VersionSpecificApiImpl : VersionSpecificApi {
5861
isPrimary = value
5962
}
6063

64+
override val IrConstructor.parametersVS: List<IrValueParameter>
65+
get() = parameters
66+
67+
override val IrConstructorCall.argumentsVS: List<IrExpression?>
68+
get() = arguments
69+
70+
override fun IrType.isNullableVS(): Boolean {
71+
return isNullable()
72+
}
73+
6174
override fun referenceClass(context: IrPluginContext, packageName: String, name: String): IrClassSymbol? {
6275
return context.referenceClass(
6376
ClassId(

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,16 +12,20 @@ import org.jetbrains.kotlin.cli.common.CLIConfigurationKeys
1212
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
1313
import org.jetbrains.kotlin.config.CompilerConfigurationKey
1414
import org.jetbrains.kotlin.descriptors.SourceElement
15+
import org.jetbrains.kotlin.ir.backend.js.utils.valueArguments
1516
import org.jetbrains.kotlin.ir.builders.declarations.IrFieldBuilder
1617
import org.jetbrains.kotlin.ir.declarations.*
1718
import org.jetbrains.kotlin.ir.expressions.IrCall
19+
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
20+
import org.jetbrains.kotlin.ir.expressions.IrExpression
1821
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
1922
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
2023
import org.jetbrains.kotlin.ir.expressions.impl.IrConstructorCallImpl
2124
import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
2225
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
2326
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
2427
import org.jetbrains.kotlin.ir.types.IrType
28+
import org.jetbrains.kotlin.ir.types.isNullable
2529
import org.jetbrains.kotlin.ir.util.copyTo
2630
import org.jetbrains.kotlin.name.CallableId
2731
import org.jetbrains.kotlin.name.ClassId
@@ -56,6 +60,16 @@ object VersionSpecificApiImpl : VersionSpecificApi {
5660
isPrimary = value
5761
}
5862

63+
override val IrConstructor.parametersVS: List<IrValueParameter>
64+
get() = valueParameters
65+
66+
override val IrConstructorCall.argumentsVS: List<IrExpression?>
67+
get() = valueArguments
68+
69+
override fun IrType.isNullableVS(): Boolean {
70+
return isNullable()
71+
}
72+
5973
override fun referenceClass(context: IrPluginContext, packageName: String, name: String): IrClassSymbol? {
6074
return context.referenceClass(
6175
ClassId(

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

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,12 @@ import org.jetbrains.kotlin.cli.common.messages.MessageCollector
1111
import org.jetbrains.kotlin.config.CommonConfigurationKeys
1212
import org.jetbrains.kotlin.config.CompilerConfigurationKey
1313
import org.jetbrains.kotlin.descriptors.SourceElement
14+
import org.jetbrains.kotlin.ir.backend.js.utils.valueArguments
1415
import org.jetbrains.kotlin.ir.builders.declarations.IrFieldBuilder
1516
import org.jetbrains.kotlin.ir.declarations.*
1617
import org.jetbrains.kotlin.ir.expressions.IrCall
18+
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
19+
import org.jetbrains.kotlin.ir.expressions.IrExpression
1720
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
1821
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
1922
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
@@ -22,6 +25,7 @@ import org.jetbrains.kotlin.ir.symbols.IrClassSymbol
2225
import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
2326
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
2427
import org.jetbrains.kotlin.ir.types.IrType
28+
import org.jetbrains.kotlin.ir.types.isNullable
2529
import org.jetbrains.kotlin.ir.util.copyTo
2630
import org.jetbrains.kotlin.name.CallableId
2731
import org.jetbrains.kotlin.name.ClassId
@@ -56,6 +60,16 @@ object VersionSpecificApiImpl : VersionSpecificApi {
5660
isPrimary = value
5761
}
5862

63+
override val IrConstructor.parametersVS: List<IrValueParameter>
64+
get() = valueParameters
65+
66+
override val IrConstructorCall.argumentsVS: List<IrExpression?>
67+
get() = valueArguments
68+
69+
override fun IrType.isNullableVS(): Boolean {
70+
return isNullable()
71+
}
72+
5973
override fun referenceClass(context: IrPluginContext, packageName: String, name: String): IrClassSymbol? {
6074
return context.referenceClass(
6175
ClassId(

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

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,8 @@ import org.jetbrains.kotlin.descriptors.SourceElement
1414
import org.jetbrains.kotlin.ir.builders.declarations.IrFieldBuilder
1515
import org.jetbrains.kotlin.ir.declarations.*
1616
import org.jetbrains.kotlin.ir.expressions.IrCall
17+
import org.jetbrains.kotlin.ir.expressions.IrConstructorCall
18+
import org.jetbrains.kotlin.ir.expressions.IrExpression
1719
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
1820
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
1921
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl
@@ -23,6 +25,7 @@ import org.jetbrains.kotlin.ir.symbols.IrConstructorSymbol
2325
import org.jetbrains.kotlin.ir.symbols.IrSimpleFunctionSymbol
2426
import org.jetbrains.kotlin.ir.types.IrType
2527
import org.jetbrains.kotlin.ir.util.copyTo
28+
import org.jetbrains.kotlin.ir.util.isNullable
2629
import org.jetbrains.kotlin.name.CallableId
2730
import org.jetbrains.kotlin.name.ClassId
2831
import org.jetbrains.kotlin.name.FqName
@@ -58,6 +61,16 @@ object VersionSpecificApiImpl : VersionSpecificApi {
5861
isPrimary = value
5962
}
6063

64+
override val IrConstructor.parametersVS: List<IrValueParameter>
65+
get() = parameters
66+
67+
override val IrConstructorCall.argumentsVS: List<IrExpression?>
68+
get() = arguments.toList()
69+
70+
override fun IrType.isNullableVS(): Boolean {
71+
return isNullable()
72+
}
73+
6174
override fun referenceClass(context: IrPluginContext, packageName: String, name: String): IrClassSymbol? {
6275
return context.referenceClass(
6376
ClassId(

compiler-plugin/compiler-plugin-k2/src/main/core/kotlinx/rpc/codegen/FirVersionSpecificApi.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ interface FirVersionSpecificApi {
3636
fun FirRegularClass.declarationsVS(session: FirSession): List<FirBasedSymbol<*>>
3737

3838
val FirResolvedTypeRef.coneTypeVS: ConeKotlinType
39+
40+
fun FirTypeRef.toRegularClassSymbolVS(session: FirSession): FirRegularClassSymbol?
3941
}
4042

4143
inline fun <T> vsApi(body: FirVersionSpecificApi.() -> T): T {

compiler-plugin/compiler-plugin-k2/src/main/core/kotlinx/rpc/codegen/checkers/SerializableProperties.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@
55
package kotlinx.rpc.codegen.checkers
66

77
import kotlinx.rpc.codegen.common.RpcClassId
8+
import kotlinx.rpc.codegen.vsApi
89
import org.jetbrains.kotlin.descriptors.ClassKind
910
import org.jetbrains.kotlin.descriptors.Visibilities
1011
import org.jetbrains.kotlin.fir.FirSession
11-
import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClassSymbol
1212
import org.jetbrains.kotlin.fir.caches.FirCache
1313
import org.jetbrains.kotlin.fir.caches.createCache
1414
import org.jetbrains.kotlin.fir.caches.firCachesFactory
@@ -112,5 +112,5 @@ private fun FirClassSymbol<*>.superClassOrAny(session: FirSession): FirRegularCl
112112
superType.fullyExpandedType(session)
113113
.toRegularClassSymbol(session)
114114
?.takeIf { it.classKind == ClassKind.CLASS }
115-
} ?: session.builtinTypes.anyType.toRegularClassSymbol(session) ?: error("Symbol for kotlin/Any not found")
115+
} ?: vsApi { session.builtinTypes.anyType.toRegularClassSymbolVS(session) } ?: error("Symbol for kotlin/Any not found")
116116
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package kotlinx.rpc.codegen
66

77
import org.jetbrains.kotlin.KtSourceElement
88
import org.jetbrains.kotlin.fir.FirSession
9+
import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClassSymbol
910
import org.jetbrains.kotlin.fir.declarations.FirFunction
1011
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
1112
import org.jetbrains.kotlin.fir.resolve.toClassSymbol
@@ -55,4 +56,8 @@ object FirVersionSpecificApiImpl : FirVersionSpecificApi {
5556
}
5657

5758
override val FirResolvedTypeRef.coneTypeVS: ConeKotlinType get() = coneType
59+
60+
override fun FirTypeRef.toRegularClassSymbolVS(session: FirSession): FirRegularClassSymbol? {
61+
return toRegularClassSymbol(session)
62+
}
5863
}

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ package kotlinx.rpc.codegen
66

77
import org.jetbrains.kotlin.KtSourceElement
88
import org.jetbrains.kotlin.fir.FirSession
9+
import org.jetbrains.kotlin.fir.analysis.checkers.toRegularClassSymbol
910
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
1011
import org.jetbrains.kotlin.fir.types.ConeClassLikeType
1112
import org.jetbrains.kotlin.fir.types.ConeKotlinType
@@ -56,4 +57,8 @@ object FirVersionSpecificApiImpl : FirVersionSpecificApi {
5657
}
5758

5859
override val FirResolvedTypeRef.coneTypeVS: ConeKotlinType get() = type
60+
61+
override fun FirTypeRef.toRegularClassSymbolVS(session: FirSession): FirRegularClassSymbol? {
62+
return toRegularClassSymbol(session)
63+
}
5964
}

0 commit comments

Comments
 (0)