From 10cedd495dd4f11d7ef4f13d9c3f44df1b01e93b Mon Sep 17 00:00:00 2001 From: "Alexander.Likhachev" Date: Mon, 22 Jan 2024 17:36:08 +0100 Subject: [PATCH] [BTA] Add Kotlin version getter into `CompilationService` ^KT-62921 In Progress --- .../kotlin-build-tools-api/api/kotlin-build-tools-api.api | 1 + .../jetbrains/kotlin/buildtools/api/CompilationService.kt | 8 +++++++- .../kotlin/buildtools/internal/CompilationServiceImpl.kt | 3 +++ 3 files changed, 11 insertions(+), 1 deletion(-) diff --git a/compiler/build-tools/kotlin-build-tools-api/api/kotlin-build-tools-api.api b/compiler/build-tools/kotlin-build-tools-api/api/kotlin-build-tools-api.api index 93b058004c7..e5656f8f53f 100644 --- a/compiler/build-tools/kotlin-build-tools-api/api/kotlin-build-tools-api.api +++ b/compiler/build-tools/kotlin-build-tools-api/api/kotlin-build-tools-api.api @@ -12,6 +12,7 @@ public abstract interface class org/jetbrains/kotlin/buildtools/api/CompilationS public abstract fun calculateClasspathSnapshot (Ljava/io/File;Lorg/jetbrains/kotlin/buildtools/api/jvm/ClassSnapshotGranularity;)Lorg/jetbrains/kotlin/buildtools/api/jvm/ClasspathEntrySnapshot; public abstract fun compileJvm (Lorg/jetbrains/kotlin/buildtools/api/ProjectId;Lorg/jetbrains/kotlin/buildtools/api/CompilerExecutionStrategyConfiguration;Lorg/jetbrains/kotlin/buildtools/api/jvm/JvmCompilationConfiguration;Ljava/util/List;Ljava/util/List;)Lorg/jetbrains/kotlin/buildtools/api/CompilationResult; public abstract fun finishProjectCompilation (Lorg/jetbrains/kotlin/buildtools/api/ProjectId;)V + public abstract fun getCompilerVersion ()Ljava/lang/String; public abstract fun getCustomKotlinScriptFilenameExtensions (Ljava/util/List;)Ljava/util/Collection; public static fun loadImplementation (Ljava/lang/ClassLoader;)Lorg/jetbrains/kotlin/buildtools/api/CompilationService; public abstract fun makeCompilerExecutionStrategyConfiguration ()Lorg/jetbrains/kotlin/buildtools/api/CompilerExecutionStrategyConfiguration; diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/CompilationService.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/CompilationService.kt index 9238b92d571..6ca1d22cf12 100644 --- a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/CompilationService.kt +++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/CompilationService.kt @@ -9,7 +9,6 @@ import org.jetbrains.kotlin.buildtools.api.jvm.ClassSnapshotGranularity import org.jetbrains.kotlin.buildtools.api.jvm.ClasspathEntrySnapshot import org.jetbrains.kotlin.buildtools.api.jvm.JvmCompilationConfiguration import java.io.File -import java.util.* /** * A facade for invoking compilation and related stuff (such as [calculateClasspathSnapshot]) in Kotlin compiler. @@ -78,6 +77,13 @@ public interface CompilationService { */ public fun getCustomKotlinScriptFilenameExtensions(classpath: List): Collection + /** + * Returns the version of the Kotlin compiler used to run compilation. + * + * @return A string representing the version of the Kotlin compiler, for example `2.0.0-Beta4`. + */ + public fun getCompilerVersion(): String + @ExperimentalBuildToolsApi public companion object { @JvmStatic diff --git a/compiler/build-tools/kotlin-build-tools-impl/src/main/kotlin/org/jetbrains/kotlin/buildtools/internal/CompilationServiceImpl.kt b/compiler/build-tools/kotlin-build-tools-impl/src/main/kotlin/org/jetbrains/kotlin/buildtools/internal/CompilationServiceImpl.kt index 9d390303e1c..93c93d83e83 100644 --- a/compiler/build-tools/kotlin-build-tools-impl/src/main/kotlin/org/jetbrains/kotlin/buildtools/internal/CompilationServiceImpl.kt +++ b/compiler/build-tools/kotlin-build-tools-impl/src/main/kotlin/org/jetbrains/kotlin/buildtools/internal/CompilationServiceImpl.kt @@ -24,6 +24,7 @@ import org.jetbrains.kotlin.cli.jvm.K2JVMCompiler import org.jetbrains.kotlin.cli.jvm.compiler.KotlinCoreEnvironment import org.jetbrains.kotlin.cli.jvm.modules.CoreJrtFileSystem import org.jetbrains.kotlin.compilerRunner.KotlinCompilerRunnerUtils +import org.jetbrains.kotlin.config.KotlinCompilerVersion import org.jetbrains.kotlin.config.Services import org.jetbrains.kotlin.daemon.client.BasicCompilerServicesWithResultsFacadeServer import org.jetbrains.kotlin.daemon.common.CompilerId @@ -230,6 +231,8 @@ internal object CompilationServiceImpl : CompilationService { ExitCode.COMPILATION_ERROR }).asCompilationResult } + + override fun getCompilerVersion(): String = KotlinCompilerVersion.VERSION } internal class CompilationServiceProxy : CompilationService by CompilationServiceImpl \ No newline at end of file