Open
Description
By their nature; all member-functions of RpcService
implementations should be suspend
ing.
During development, it may be a common mistake to omit suspend
, in which case the developer-user is faced with a potentially confusing error at compile time:
e: org.jetbrains.kotlin.backend.common.BackendException: Backend Internal error: Exception during IR lowering
File being compiled: /Users/user/Projects/project/shared/src/commonMain/kotlin/com/project/shared/domain/service/SomeService.kt
The root cause java.lang.RuntimeException was thrown at: org.jetbrains.kotlin.backend.jvm.codegen.FunctionCodegen.generate(FunctionCodegen.kt:47)
...
<long stack trace>
Describe the solution you'd like
Compiler plugin or KSP part of kotlinx.rpc
should detect the presence of non suspend
functions and throw a more meaningful error e.g:
The function 'getUser' in com.company.project.service.UserService is not suspending, only suspending functions are allowed in RPC service implementations.