22 * Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
33 */
44
5+ @file:Suppress(" StructuralWrap" )
6+
57package kotlinx.rpc.codegen.checkers.diagnostics
68
79import kotlinx.rpc.codegen.StrictModeAggregator
8- import org.jetbrains.kotlin.com.intellij.psi.PsiElement
910import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies
1011import org.jetbrains.kotlin.diagnostics.error0
1112import org.jetbrains.kotlin.diagnostics.error1
@@ -14,16 +15,23 @@ import org.jetbrains.kotlin.diagnostics.rendering.RootDiagnosticRendererFactory
1415import org.jetbrains.kotlin.fir.types.ConeKotlinType
1516import org.jetbrains.kotlin.name.Name
1617import org.jetbrains.kotlin.psi.KtAnnotated
18+ import org.jetbrains.kotlin.psi.KtElement
19+
20+ // ###########################################################################
21+ // ### BIG WARNING, LISTEN CLOSELY! ###
22+ // # Do NOT use `PsiElement` for `error0` or any other function #
23+ // # Instead use KtElement, otherwise problems in IDE and in tests may arise #
24+ // ###########################################################################
1725
1826object FirRpcDiagnostics {
1927 val MISSING_RPC_ANNOTATION by error0<KtAnnotated >()
2028 val MISSING_SERIALIZATION_MODULE by error0<KtAnnotated >()
2129 val WRONG_RPC_ANNOTATION_TARGET by error1<KtAnnotated , ConeKotlinType >()
2230 val CHECKED_ANNOTATION_VIOLATION by error1<KtAnnotated , ConeKotlinType >()
23- val NON_SUSPENDING_REQUEST_WITHOUT_STREAMING_RETURN_TYPE by error0<PsiElement >()
24- val AD_HOC_POLYMORPHISM_IN_RPC_SERVICE by error2<PsiElement , Int , Name >()
25- val TYPE_PARAMETERS_IN_RPC_FUNCTION by error0<PsiElement >(SourceElementPositioningStrategies .TYPE_PARAMETERS_LIST )
26- val TYPE_PARAMETERS_IN_RPC_INTERFACE by error0<PsiElement >(SourceElementPositioningStrategies .TYPE_PARAMETERS_LIST )
31+ val NON_SUSPENDING_REQUEST_WITHOUT_STREAMING_RETURN_TYPE by error0<KtElement >()
32+ val AD_HOC_POLYMORPHISM_IN_RPC_SERVICE by error2<KtElement , Int , Name >()
33+ val TYPE_PARAMETERS_IN_RPC_FUNCTION by error0<KtElement >(SourceElementPositioningStrategies .TYPE_PARAMETERS_LIST )
34+ val TYPE_PARAMETERS_IN_RPC_INTERFACE by error0<KtElement >(SourceElementPositioningStrategies .TYPE_PARAMETERS_LIST )
2735
2836 init {
2937 RootDiagnosticRendererFactory .registerFactory(RpcDiagnosticRendererFactory )
@@ -32,13 +40,13 @@ object FirRpcDiagnostics {
3240
3341@Suppress(" PropertyName" , " detekt.VariableNaming" )
3442class FirRpcStrictModeDiagnostics (val modes : StrictModeAggregator ) {
35- val STATE_FLOW_IN_RPC_SERVICE by modded0<PsiElement >(modes.stateFlow)
36- val SHARED_FLOW_IN_RPC_SERVICE by modded0<PsiElement >(modes.sharedFlow)
37- val NESTED_STREAMING_IN_RPC_SERVICE by modded0<PsiElement >(modes.nestedFlow)
38- val STREAM_SCOPE_FUNCTION_IN_RPC by modded0<PsiElement >(modes.streamScopedFunctions)
39- val SUSPENDING_SERVER_STREAMING_IN_RPC_SERVICE by modded0<PsiElement >(modes.suspendingServerStreaming)
40- val NON_TOP_LEVEL_SERVER_STREAMING_IN_RPC_SERVICE by modded0<PsiElement >(modes.notTopLevelServerFlow)
41- val FIELD_IN_RPC_SERVICE by modded0<PsiElement >(modes.fields)
43+ val STATE_FLOW_IN_RPC_SERVICE by modded0<KtElement >(modes.stateFlow)
44+ val SHARED_FLOW_IN_RPC_SERVICE by modded0<KtElement >(modes.sharedFlow)
45+ val NESTED_STREAMING_IN_RPC_SERVICE by modded0<KtElement >(modes.nestedFlow)
46+ val STREAM_SCOPE_FUNCTION_IN_RPC by modded0<KtElement >(modes.streamScopedFunctions)
47+ val SUSPENDING_SERVER_STREAMING_IN_RPC_SERVICE by modded0<KtElement >(modes.suspendingServerStreaming)
48+ val NON_TOP_LEVEL_SERVER_STREAMING_IN_RPC_SERVICE by modded0<KtElement >(modes.notTopLevelServerFlow)
49+ val FIELD_IN_RPC_SERVICE by modded0<KtElement >(modes.fields)
4250
4351 init {
4452 RootDiagnosticRendererFactory .registerFactory(RpcStrictModeDiagnosticRendererFactory (this ))
0 commit comments