[BT] Mark the API as experimental
#KT-57398 In Progress
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 039c6c3..987148e 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
@@ -8,6 +8,9 @@
public final fun loadImplementation (Ljava/lang/ClassLoader;)Lorg/jetbrains/kotlin/buildtools/api/CompilationService;
}
+public abstract interface annotation class org/jetbrains/kotlin/buildtools/api/ExperimentalBuildToolsApi : java/lang/annotation/Annotation {
+}
+
public abstract interface class org/jetbrains/kotlin/buildtools/api/KotlinLogger {
public abstract fun debug (Ljava/lang/String;)V
public abstract fun error (Ljava/lang/String;Ljava/lang/Throwable;)V
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 3cb7177..2d490cf 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
@@ -13,6 +13,7 @@
* A facade for invoking compilation in Kotlin compiler. It allows to use compiler in different modes.
* TODO: add a mention where to see the available modes after implementing them
*/
+@ExperimentalBuildToolsApi
interface CompilationService {
fun compile(
compilationStrategySettings: CompilationStrategySettings,
@@ -20,6 +21,7 @@
compilationOptions: CompilationOptions,
): CompilationResult
+ @ExperimentalBuildToolsApi
companion object {
@JvmStatic
fun loadImplementation(classLoader: ClassLoader) = loadImplementation(CompilationService::class, classLoader)
diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/ExperimentalBuildToolsApi.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/ExperimentalBuildToolsApi.kt
new file mode 100644
index 0000000..25aa05f
--- /dev/null
+++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/ExperimentalBuildToolsApi.kt
@@ -0,0 +1,9 @@
+/*
+ * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors.
+ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.buildtools.api
+
+@RequiresOptIn("This part of the Build Tools API is experimental and might change in the future releases")
+annotation class ExperimentalBuildToolsApi
diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoader.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoader.kt
index 4dca491..7d4a7b4 100644
--- a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoader.kt
+++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/SharedApiClassesClassLoader.kt
@@ -16,6 +16,7 @@
*/
@Suppress("FunctionName")
@JvmName("newInstance")
+@ExperimentalBuildToolsApi
fun SharedApiClassesClassLoader(): ClassLoader = SharedApiClassesClassLoaderImpl(
SharedApiClassesClassLoaderImpl::class.java.classLoader,
ClassLoader.getSystemClassLoader(),
diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationOptions.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationOptions.kt
index 7066952..457073a 100644
--- a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationOptions.kt
+++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationOptions.kt
@@ -5,38 +5,48 @@
package org.jetbrains.kotlin.buildtools.api.compilation
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
import org.jetbrains.kotlin.buildtools.api.KotlinLogger
+@ExperimentalBuildToolsApi
sealed class CompilationOptions(
val logger: KotlinLogger?
)
+@ExperimentalBuildToolsApi
abstract class JvmCompilationOptions(
logger: KotlinLogger?,
val kotlinScriptExtensions: List<String>,
) : CompilationOptions(logger)
+@ExperimentalBuildToolsApi
interface IncrementalCompilationOptions
+@ExperimentalBuildToolsApi
interface NonIncrementalCompilationOptions
+@ExperimentalBuildToolsApi
class NonIncrementalJvmCompilationOptions(
logger: KotlinLogger? = null,
kotlinScriptExtensions: List<String>,
) : JvmCompilationOptions(logger, kotlinScriptExtensions), NonIncrementalCompilationOptions
+@ExperimentalBuildToolsApi
abstract class JsCompilationOptions(
logger: KotlinLogger?,
) : CompilationOptions(logger)
+@ExperimentalBuildToolsApi
class NonIncrementalJsCompilationOptions(
logger: KotlinLogger? = null,
) : JsCompilationOptions(logger), NonIncrementalCompilationOptions
+@ExperimentalBuildToolsApi
abstract class MetadataCompilationOptions(
logger: KotlinLogger?,
) : CompilationOptions(logger)
+@ExperimentalBuildToolsApi
class NonIncrementalMetadataCompilationOptions(
logger: KotlinLogger? = null,
) : MetadataCompilationOptions(logger), NonIncrementalCompilationOptions
\ No newline at end of file
diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationResult.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationResult.kt
index d503ae9..2dab7a4 100644
--- a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationResult.kt
+++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationResult.kt
@@ -5,6 +5,9 @@
package org.jetbrains.kotlin.buildtools.api.compilation
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+
+@ExperimentalBuildToolsApi
enum class CompilationResult {
COMPILATION_SUCCESS,
COMPILATION_ERROR,
diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationStrategySettings.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationStrategySettings.kt
index 09d55a3..9428f01 100644
--- a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationStrategySettings.kt
+++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/CompilationStrategySettings.kt
@@ -5,6 +5,9 @@
package org.jetbrains.kotlin.buildtools.api.compilation
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+
+@ExperimentalBuildToolsApi
sealed class CompilationStrategySettings {
object InProcess : CompilationStrategySettings()
diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/KotlinBuildToolsException.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/KotlinBuildToolsException.kt
index 0d0f76f..c7ef09a 100644
--- a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/KotlinBuildToolsException.kt
+++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/KotlinBuildToolsException.kt
@@ -5,4 +5,7 @@
package org.jetbrains.kotlin.buildtools.api.compilation
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+
+@ExperimentalBuildToolsApi
open class KotlinBuildToolsException(message: String) : Exception(message)
\ No newline at end of file
diff --git a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/ParseCompilationArgumentsException.kt b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/ParseCompilationArgumentsException.kt
index 1d6c934..8f16918 100644
--- a/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/ParseCompilationArgumentsException.kt
+++ b/compiler/build-tools/kotlin-build-tools-api/src/main/kotlin/org/jetbrains/kotlin/buildtools/api/compilation/ParseCompilationArgumentsException.kt
@@ -5,4 +5,7 @@
package org.jetbrains.kotlin.buildtools.api.compilation
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
+
+@ExperimentalBuildToolsApi
class ParseCompilationArgumentsException(message: String) : KotlinBuildToolsException(message)
\ No newline at end of file
diff --git a/compiler/build-tools/kotlin-build-tools-impl/build.gradle.kts b/compiler/build-tools/kotlin-build-tools-impl/build.gradle.kts
index 6841e8b..fa84ec1 100644
--- a/compiler/build-tools/kotlin-build-tools-impl/build.gradle.kts
+++ b/compiler/build-tools/kotlin-build-tools-impl/build.gradle.kts
@@ -15,4 +15,10 @@
publish()
-standardPublicJars()
\ No newline at end of file
+standardPublicJars()
+
+kotlin {
+ sourceSets.all {
+ languageSettings.optIn("org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi")
+ }
+}
\ No newline at end of file
diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/btapi/BuildToolsApiCompilationWork.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/btapi/BuildToolsApiCompilationWork.kt
index 9ef27eb..1b65873 100644
--- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/btapi/BuildToolsApiCompilationWork.kt
+++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/compilerRunner/btapi/BuildToolsApiCompilationWork.kt
@@ -12,6 +12,7 @@
import org.gradle.workers.WorkParameters
import org.jetbrains.kotlin.build.report.metrics.BuildMetricsReporter
import org.jetbrains.kotlin.buildtools.api.CompilationService
+import org.jetbrains.kotlin.buildtools.api.ExperimentalBuildToolsApi
import org.jetbrains.kotlin.buildtools.api.KotlinLogger
import org.jetbrains.kotlin.buildtools.api.SharedApiClassesClassLoader
import org.jetbrains.kotlin.buildtools.api.compilation.*
@@ -26,6 +27,7 @@
import org.slf4j.LoggerFactory
import java.io.File
+@OptIn(ExperimentalBuildToolsApi::class)
internal abstract class BuildToolsApiCompilationWork : WorkAction<BuildToolsApiCompilationWork.BuildToolsApiCompilationParameters> {
internal interface BuildToolsApiCompilationParameters : WorkParameters {
val classLoadersCachingService: Property<ClassLoadersCachingBuildService>
@@ -107,6 +109,7 @@
)
}
+@OptIn(ExperimentalBuildToolsApi::class)
private object SharedApiClassesClassLoaderProvider : ParentClassLoaderProvider {
override fun getClassLoader() = SharedApiClassesClassLoader()