2
2
* Copyright 2023-2025 JetBrains s.r.o and contributors. Use of this source code is governed by the Apache 2.0 license.
3
3
*/
4
4
5
+ @file:Suppress(" StructuralWrap" )
6
+
5
7
package kotlinx.rpc.codegen.checkers.diagnostics
6
8
7
9
import kotlinx.rpc.codegen.StrictModeAggregator
8
- import org.jetbrains.kotlin.com.intellij.psi.PsiElement
9
10
import org.jetbrains.kotlin.diagnostics.SourceElementPositioningStrategies
10
11
import org.jetbrains.kotlin.diagnostics.error0
11
12
import org.jetbrains.kotlin.diagnostics.error1
@@ -14,16 +15,23 @@ import org.jetbrains.kotlin.diagnostics.rendering.RootDiagnosticRendererFactory
14
15
import org.jetbrains.kotlin.fir.types.ConeKotlinType
15
16
import org.jetbrains.kotlin.name.Name
16
17
import 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
+ // ###########################################################################
17
25
18
26
object FirRpcDiagnostics {
19
27
val MISSING_RPC_ANNOTATION by error0<KtAnnotated >()
20
28
val MISSING_SERIALIZATION_MODULE by error0<KtAnnotated >()
21
29
val WRONG_RPC_ANNOTATION_TARGET by error1<KtAnnotated , ConeKotlinType >()
22
30
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 )
27
35
28
36
init {
29
37
RootDiagnosticRendererFactory .registerFactory(RpcDiagnosticRendererFactory )
@@ -32,13 +40,13 @@ object FirRpcDiagnostics {
32
40
33
41
@Suppress(" PropertyName" , " detekt.VariableNaming" )
34
42
class 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)
42
50
43
51
init {
44
52
RootDiagnosticRendererFactory .registerFactory(RpcStrictModeDiagnosticRendererFactory (this ))
0 commit comments