diff --git a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceClientSideImpl.kt b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceClientSideImpl.kt index 316939c04f9..4bc95668fa7 100644 --- a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceClientSideImpl.kt +++ b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceClientSideImpl.kt @@ -142,6 +142,11 @@ class CompileServiceClientSideImpl( return readMessage(id) } + override suspend fun getKotlinVersion(): CompileService.CallResult { + val id = sendMessage(GetKotlinVersionMessage()) + return readMessage(id) + } + override suspend fun getDaemonJVMOptions(): CompileService.CallResult { val id = sendMessage(GetDaemonJVMOptionsMessage()) val res = readMessage>(id) @@ -258,6 +263,11 @@ class CompileServiceClientSideImpl( sendReply(server.getDaemonInfo()) } + class GetKotlinVersionMessage : Server.Message() { + override suspend fun processImpl(server: CompileServiceServerSide, sendReply: (Any?) -> Unit) = + sendReply(server.getKotlinVersion()) + } + class RegisterClientMessage(val aliveFlagPath: String?) : Server.Message() { override suspend fun processImpl(server: CompileServiceServerSide, sendReply: (Any?) -> Unit) = sendReply(server.registerClient(aliveFlagPath)) diff --git a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceRMIWrapper.kt b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceRMIWrapper.kt index 8f8e30ea9c3..f4750cd04db 100644 --- a/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceRMIWrapper.kt +++ b/compiler/daemon/daemon-common-new/src/org/jetbrains/kotlin/daemon/common/experimental/CompileServiceRMIWrapper.kt @@ -44,6 +44,10 @@ class CompileServiceRMIWrapper(val server: CompileServiceServerSide, daemonOptio server.getDaemonInfo() } + override fun getKotlinVersion() = runBlocking { + server.getKotlinVersion() + } + override fun getDaemonJVMOptions() = runBlocking { server.getDaemonJVMOptions() } diff --git a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileService.kt b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileService.kt index 79da9bbf0aa..591f1615af1 100644 --- a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileService.kt +++ b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileService.kt @@ -80,6 +80,9 @@ interface CompileService : Remote { @Throws(RemoteException::class) fun getDaemonInfo(): CallResult + @Throws(RemoteException::class) + fun getKotlinVersion(): CallResult + @Throws(RemoteException::class) fun getDaemonJVMOptions(): CallResult diff --git a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceAsync.kt b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceAsync.kt index 0aeb816d420..dc7f452575a 100644 --- a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceAsync.kt +++ b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceAsync.kt @@ -20,6 +20,8 @@ interface CompileServiceAsync { suspend fun getDaemonInfo(): CompileService.CallResult + suspend fun getKotlinVersion(): CompileService.CallResult + suspend fun getDaemonJVMOptions(): CompileService.CallResult suspend fun registerClient(aliveFlagPath: String?): CompileService.CallResult diff --git a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceAsyncWrapper.kt b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceAsyncWrapper.kt index d919395ad65..b16078a2533 100644 --- a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceAsyncWrapper.kt +++ b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceAsyncWrapper.kt @@ -58,6 +58,8 @@ class CompileServiceAsyncWrapper( override suspend fun getDaemonInfo() = rmiCompileService.getDaemonInfo() + override suspend fun getKotlinVersion() = + rmiCompileService.getKotlinVersion() override suspend fun getDaemonJVMOptions() = rmiCompileService.getDaemonJVMOptions() diff --git a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceRMIWrapper.kt b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceRMIWrapper.kt index 887217aadba..b5a9ff3f175 100644 --- a/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceRMIWrapper.kt +++ b/compiler/daemon/daemon-common/src/org/jetbrains/kotlin/daemon/common/CompileServiceRMIWrapper.kt @@ -144,6 +144,9 @@ class CompileServiceClientRMIWrapper( asyncCompileService.getDaemonInfo() } + override fun getKotlinVersion() = runBlocking { + asyncCompileService.getKotlinVersion() + } override fun getDaemonJVMOptions() = runBlocking { asyncCompileService.getDaemonJVMOptions() diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt index c9e4e558398..e0c06112940 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/CompileServiceImpl.kt @@ -38,6 +38,7 @@ import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.jarfs.FastJarFileSystem import org.jetbrains.kotlin.cli.jvm.compiler.jarfs.FastJarHandler import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler +import org.jetbrains.kotlin.config.KotlinCompilerVersion import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.daemon.common.* import org.jetbrains.kotlin.daemon.report.CompileServicesFacadeMessageCollector @@ -663,6 +664,14 @@ class CompileServiceImpl( CompileService.CallResult.Good("Kotlin daemon on port $port") } + override fun getKotlinVersion(): CompileService.CallResult = ifAlive { + try { + CompileService.CallResult.Good(KotlinCompilerVersion.VERSION) + } catch (e: Exception) { + CompileService.CallResult.Error("Unknown Kotlin version") + } + } + override fun getDaemonOptions(): CompileService.CallResult = ifAlive { CompileService.CallResult.Good(daemonOptions) } diff --git a/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt b/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt index d04fdb4a38d..886e03a6a77 100644 --- a/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt +++ b/compiler/daemon/src/org/jetbrains/kotlin/daemon/experimental/CompileServiceServerSideImpl.kt @@ -25,6 +25,7 @@ import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.compiler.jarfs.FastJarFileSystem import org.jetbrains.kotlin.cli.metadata.K2MetadataCompiler +import org.jetbrains.kotlin.config.KotlinCompilerVersion import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.daemon.CompileServiceImplBase import org.jetbrains.kotlin.daemon.CompilerSelector @@ -230,6 +231,15 @@ class CompileServiceServerSideImpl( CompileService.CallResult.Good("Kotlin daemon on socketPort $port") } + override suspend fun getKotlinVersion(): CompileService.CallResult = + ifAlive(minAliveness = Aliveness.Dying) { + try { + CompileService.CallResult.Good(KotlinCompilerVersion.VERSION) + } catch (e: Exception) { + CompileService.CallResult.Error("Unknown Kotlin version") + } + } + override suspend fun getDaemonOptions(): CompileService.CallResult = ifAlive { CompileService.CallResult.Good(daemonOptions) }