Skip to content

Commit 0761ddd

Browse files
committed
Fix compilation
1 parent fef7910 commit 0761ddd

File tree

15 files changed

+148
-43
lines changed

15 files changed

+148
-43
lines changed

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ 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.IrExpression
1817
import org.jetbrains.kotlin.ir.expressions.IrMemberAccessExpression
1918
import org.jetbrains.kotlin.ir.expressions.IrStatementOrigin
2019
import org.jetbrains.kotlin.ir.expressions.impl.IrCallImpl

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,11 @@
44

55
package kotlinx.rpc.codegen.extension
66

7-
import kotlinx.rpc.codegen.VersionSpecificApi
87
import kotlinx.rpc.codegen.common.RpcNames
98
import org.jetbrains.kotlin.cli.common.messages.CompilerMessageSeverity
109
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
11-
import org.jetbrains.kotlin.fir.java.enhancement.FirEmptyJavaDeclarationList.declarations
1210
import org.jetbrains.kotlin.ir.declarations.IrClass
1311
import org.jetbrains.kotlin.ir.declarations.IrDeclaration
14-
import org.jetbrains.kotlin.ir.declarations.IrParameterKind
1512
import org.jetbrains.kotlin.ir.declarations.IrProperty
1613
import org.jetbrains.kotlin.ir.declarations.IrSimpleFunction
1714
import org.jetbrains.kotlin.ir.types.classOrNull

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package kotlinx.rpc.codegen.extension
77
import kotlinx.rpc.codegen.VersionSpecificApi
88
import kotlinx.rpc.codegen.common.rpcMethodClassName
99
import org.jetbrains.kotlin.backend.common.lower.DeclarationIrBuilder
10-
import org.jetbrains.kotlin.backend.common.serialization.proto.IrFunctionBase
1110
import org.jetbrains.kotlin.backend.jvm.functionByName
1211
import org.jetbrains.kotlin.cli.common.messages.MessageCollector
1312
import org.jetbrains.kotlin.descriptors.DescriptorVisibilities

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

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@ import org.jetbrains.kotlin.descriptors.ClassKind
1616
import org.jetbrains.kotlin.descriptors.Modality
1717
import org.jetbrains.kotlin.descriptors.Visibilities
1818
import org.jetbrains.kotlin.fir.FirSession
19-
import org.jetbrains.kotlin.fir.declarations.declaredFunctions
2019
import org.jetbrains.kotlin.fir.declarations.utils.isInterface
2120
import org.jetbrains.kotlin.fir.declarations.utils.visibility
2221
import org.jetbrains.kotlin.fir.extensions.*
@@ -259,7 +258,7 @@ class FirRpcServiceGenerator(
259258
* Scrapes the functions from the [owner] to generate method classes.
260259
*/
261260
private fun generateRpcServiceStubClass(owner: FirClassSymbol<*>): FirRegularClassSymbol? {
262-
val functions = owner.declaredFunctions(session)
261+
val functions = vsApi { owner.declaredFunctionsVS(session) }
263262

264263
return createNestedClass(owner, RpcNames.SERVICE_STUB_NAME, RpcGeneratedStubKey(owner.name, functions)) {
265264
visibility = Visibilities.Public

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

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

77
import org.jetbrains.kotlin.KtSourceElement
88
import org.jetbrains.kotlin.fir.FirSession
9+
import org.jetbrains.kotlin.fir.declarations.FirFunction
10+
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
11+
import org.jetbrains.kotlin.fir.expressions.FirAnnotation
12+
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
913
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
14+
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
15+
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
16+
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
17+
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
1018
import org.jetbrains.kotlin.fir.types.ConeKotlinType
1119
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
1220
import org.jetbrains.kotlin.fir.types.FirTypeRef
@@ -23,6 +31,14 @@ interface FirVersionSpecificApi {
2331
): FirClassSymbol<*>?
2432

2533
var FirResolvedTypeRefBuilder.coneTypeVS: ConeKotlinType
34+
35+
fun FirClassSymbol<*>.declaredFunctionsVS(session: FirSession): List<FirFunctionSymbol<*>>
36+
37+
fun FirRegularClassSymbol.constructorsVS(session: FirSession): List<FirConstructorSymbol>
38+
39+
fun FirRegularClass.declarationsVS(session: FirSession): List<FirBasedSymbol<*>>
40+
41+
val FirResolvedTypeRef.coneTypeVS: ConeKotlinType
2642
}
2743

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

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

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@ import org.jetbrains.kotlin.diagnostics.DiagnosticReporter
1313
import org.jetbrains.kotlin.diagnostics.reportOn
1414
import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
1515
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
16-
import org.jetbrains.kotlin.fir.declarations.processAllDeclarations
1716
import org.jetbrains.kotlin.fir.declarations.utils.isSuspend
1817
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
1918
import org.jetbrains.kotlin.fir.symbols.impl.FirNamedFunctionSymbol
@@ -37,14 +36,11 @@ object FirRpcServiceDeclarationChecker {
3736
)
3837
}
3938

40-
val functions = mutableListOf<FirNamedFunctionSymbol>()
41-
declaration.processAllDeclarations(context.session) { symbol ->
42-
if (symbol is FirNamedFunctionSymbol) {
43-
functions.add(symbol)
44-
}
45-
}
46-
47-
functions.onEach { function ->
39+
vsApi {
40+
declaration
41+
.declarationsVS(context.session)
42+
.filterIsInstance<FirNamedFunctionSymbol>()
43+
}.onEach { function ->
4844
if (function.typeParameterSymbols.isNotEmpty()) {
4945
reporter.reportOn(
5046
source = function.source,
@@ -53,7 +49,7 @@ object FirRpcServiceDeclarationChecker {
5349
)
5450
}
5551

56-
val returnType = vsApi { function.resolvedReturnTypeRef.coneType.toClassSymbolVS(context.session) }
52+
val returnType = vsApi { function.resolvedReturnTypeRef.coneTypeVS.toClassSymbolVS(context.session) }
5753
?: return@onEach
5854

5955
if (returnType.classId != RpcClassId.flow && !function.isSuspend) {

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

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,6 @@ import org.jetbrains.kotlin.fir.analysis.checkers.context.CheckerContext
1818
import org.jetbrains.kotlin.fir.analysis.checkers.extractArgumentsTypeRefAndSource
1919
import org.jetbrains.kotlin.fir.analysis.checkers.toClassLikeSymbol
2020
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
21-
import org.jetbrains.kotlin.fir.declarations.processAllDeclarations
2221
import org.jetbrains.kotlin.fir.declarations.utils.isSuspend
2322
import org.jetbrains.kotlin.fir.expressions.FirFunctionCall
2423
import org.jetbrains.kotlin.fir.extensions.predicateBasedProvider
@@ -70,7 +69,7 @@ object FirRpcStrictModeClassChecker {
7069
}
7170

7271
val serializablePropertiesProvider = context.session.serializablePropertiesProvider
73-
declaration.processAllDeclarations(context.session) { declaration ->
72+
vsApi { declaration.declarationsVS(context.session) }.forEach { declaration ->
7473
when (declaration) {
7574
is FirPropertySymbol -> {
7675
ctx.strictModeDiagnostics.FIELD_IN_RPC_SERVICE?.let {
@@ -99,7 +98,7 @@ object FirRpcStrictModeClassChecker {
9998
}
10099

101100
val returnClassSymbol = vsApi {
102-
function.resolvedReturnTypeRef.coneType.toClassSymbolVS(context.session)
101+
function.resolvedReturnTypeRef.coneTypeVS.toClassSymbolVS(context.session)
103102
}
104103

105104
val types = function.valueParameterSymbols.memoryOptimizedMap { parameter ->
@@ -168,7 +167,7 @@ object FirRpcStrictModeClassChecker {
168167
}
169168

170169
val flowProps: List<FirTypeRef> = if (symbol.classId == RpcClassId.flow) {
171-
listOf<FirTypeRef>(extracted.values.toList()[0]!!)
170+
listOf(extracted.values.toList()[0]!!)
172171
} else {
173172
emptyList()
174173
}

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

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ package kotlinx.rpc.codegen.serialization
77
import kotlinx.rpc.codegen.vsApi
88
import org.jetbrains.kotlin.fir.FirAnnotationContainer
99
import org.jetbrains.kotlin.fir.FirSession
10-
import org.jetbrains.kotlin.fir.declarations.constructors
1110
import org.jetbrains.kotlin.fir.expressions.buildResolvedArgumentList
1211
import org.jetbrains.kotlin.fir.expressions.builder.buildAnnotationCall
1312
import org.jetbrains.kotlin.fir.references.builder.buildResolvedNamedReference
@@ -23,9 +22,11 @@ fun FirAnnotationContainer.addAnnotation(annotationId: ClassId, session: FirSess
2322
.getClassLikeSymbolByClassId(annotationId)
2423
as? FirRegularClassSymbol ?: return
2524

26-
val annotationConstructor = annotation
27-
.constructors(session)
28-
.firstOrNull() ?: return
25+
val annotationConstructor = vsApi {
26+
annotation
27+
.constructorsVS(session)
28+
.firstOrNull() ?: return
29+
}
2930

3031
val annotationCall = buildAnnotationCall {
3132
argumentList = buildResolvedArgumentList(null, linkedMapOf())

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

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

77
import org.jetbrains.kotlin.KtSourceElement
88
import org.jetbrains.kotlin.fir.FirSession
9+
import org.jetbrains.kotlin.fir.declarations.FirFunction
10+
import org.jetbrains.kotlin.fir.declarations.FirRegularClass
911
import org.jetbrains.kotlin.fir.resolve.toClassSymbol
12+
import org.jetbrains.kotlin.fir.symbols.FirBasedSymbol
13+
import org.jetbrains.kotlin.fir.symbols.SymbolInternals
1014
import org.jetbrains.kotlin.fir.symbols.impl.FirClassSymbol
15+
import org.jetbrains.kotlin.fir.symbols.impl.FirConstructorSymbol
16+
import org.jetbrains.kotlin.fir.symbols.impl.FirFunctionSymbol
17+
import org.jetbrains.kotlin.fir.symbols.impl.FirRegularClassSymbol
1118
import org.jetbrains.kotlin.fir.toFirResolvedTypeRef
1219
import org.jetbrains.kotlin.fir.types.ConeKotlinType
1320
import org.jetbrains.kotlin.fir.types.FirResolvedTypeRef
@@ -32,4 +39,21 @@ object FirVersionSpecificApiImpl : FirVersionSpecificApi {
3239
set(value) {
3340
coneType = value
3441
}
42+
43+
override fun FirClassSymbol<*>.declaredFunctionsVS(session: FirSession): List<FirFunctionSymbol<FirFunction>> {
44+
@OptIn(SymbolInternals::class)
45+
return fir.declarations
46+
.filterIsInstance<FirFunction>()
47+
.map { it.symbol }
48+
}
49+
50+
override fun FirRegularClassSymbol.constructorsVS(session: FirSession): List<FirConstructorSymbol> {
51+
return declarationSymbols.filterIsInstance<FirConstructorSymbol>()
52+
}
53+
54+
override fun FirRegularClass.declarationsVS(session: FirSession): List<FirBasedSymbol<*>> {
55+
return declarations.map { it.symbol }
56+
}
57+
58+
override val FirResolvedTypeRef.coneTypeVS: ConeKotlinType get() = coneType
3559
}

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

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,37 +30,37 @@ class FirCheckedAnnotationFunctionCallCheckerVS(
3030
class FirCheckedAnnotationTypeParameterCheckerVS(
3131
private val ctx: FirCheckersContext,
3232
) : FirTypeParameterChecker(MppCheckerKind.Common) {
33-
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
33+
override fun check(declaration: FirTypeParameter, context: CheckerContext, reporter: DiagnosticReporter) {
3434
FirCheckedAnnotationTypeParameterChecker.check(ctx, declaration, context, reporter)
3535
}
3636
}
3737

3838
class FirCheckedAnnotationFirClassCheckerVS(
3939
private val ctx: FirCheckersContext,
4040
) : FirClassChecker(MppCheckerKind.Common) {
41-
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
41+
override fun check(declaration: FirClass, context: CheckerContext, reporter: DiagnosticReporter) {
4242
FirCheckedAnnotationFirClassChecker.check(ctx, declaration, context, reporter)
4343
}
4444
}
4545

4646
class FirCheckedAnnotationFirFunctionCheckerVS(
4747
private val ctx: FirCheckersContext,
4848
) : FirFunctionChecker(MppCheckerKind.Common) {
49-
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
49+
override fun check(declaration: FirFunction, context: CheckerContext, reporter: DiagnosticReporter) {
5050
FirCheckedAnnotationFirFunctionChecker.check(ctx, declaration, context, reporter)
5151
}
5252
}
5353

5454
class FirRpcAnnotationCheckerVS(private val ctx: FirCheckersContext) : FirRegularClassChecker(MppCheckerKind.Common) {
55-
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
55+
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
5656
FirRpcAnnotationChecker.check(ctx, declaration, context, reporter)
5757
}
5858
}
5959

6060
class FirRpcServiceDeclarationCheckerVS(
6161
private val ctx: FirCheckersContext,
6262
) : FirRegularClassChecker(MppCheckerKind.Common) {
63-
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
63+
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
6464
FirRpcServiceDeclarationChecker.check(ctx, declaration, context, reporter)
6565
}
6666
}
@@ -74,7 +74,7 @@ class FirRpcStrictModeExpressionCheckerVS(
7474
}
7575

7676
class FirRpcStrictModeClassCheckerVS(private val ctx: FirCheckersContext) : FirRegularClassChecker(MppCheckerKind.Common) {
77-
override fun check(expression: FirFunctionCall, context: CheckerContext, reporter: DiagnosticReporter) {
77+
override fun check(declaration: FirRegularClass, context: CheckerContext, reporter: DiagnosticReporter) {
7878
FirRpcStrictModeClassChecker.check(ctx, declaration, context, reporter)
7979
}
8080
}

0 commit comments

Comments
 (0)