From 433bec3700286fa838bd73eb80da79f12d8b61cc Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Fri, 23 Feb 2024 13:06:18 +0100 Subject: [PATCH] [Gradle] Deprecate kotlinOptions DSL in KotlinCompilation ^KT-63419 In Progress --- .../api/kotlin-gradle-plugin-api.api | 4 ++++ .../kotlin/gradle/dsl/KotlinCompile.kt | 19 +++++++++++++++++++ .../kotlin/gradle/plugin/KotlinCompilation.kt | 16 ++++++++++++++-- .../android/PrototypeAndroidCompilation.kt | 1 + .../compilationImpl/KotlinCompilationImpl.kt | 1 + .../gradle/plugin/mpp/kotlinCompilations.kt | 1 + 6 files changed, 40 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api b/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api index a567d0deeed..ffe886376f8 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api +++ b/libraries/tools/kotlin-gradle-plugin-api/api/kotlin-gradle-plugin-api.api @@ -268,6 +268,10 @@ public final class org/jetbrains/kotlin/gradle/dsl/KotlinCompile$DefaultImpls { public static fun kotlinOptions (Lorg/jetbrains/kotlin/gradle/dsl/KotlinCompile;Lorg/gradle/api/Action;)V } +public final class org/jetbrains/kotlin/gradle/dsl/KotlinCompileKt { + public static final field KOTLIN_OPTIONS_AS_TOOLS_DEPRECATION_MESSAGE Ljava/lang/String; +} + public abstract interface annotation class org/jetbrains/kotlin/gradle/dsl/KotlinGradlePluginDsl : java/lang/annotation/Annotation { } diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt index 710c36427c8..bf1f480d105 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt @@ -9,6 +9,7 @@ import groovy.lang.Closure import org.gradle.api.Action import org.gradle.api.Task import org.gradle.api.tasks.Internal +import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask /** @@ -32,12 +33,16 @@ interface KotlinCompile : Task { * * The [kotlinOptions] configuration is delegated to the related task `compilerOptions` input configuration. */ + @OptIn(InternalKotlinGradlePluginApi::class) + @Deprecated(message = KOTLIN_OPTIONS_DEPRECATION_MESSAGE) @get:Internal val kotlinOptions: T /** * Configures the [kotlinOptions] with the provided configuration. */ + @OptIn(InternalKotlinGradlePluginApi::class) + @Deprecated(message = KOTLIN_OPTIONS_DEPRECATION_MESSAGE) fun kotlinOptions(fn: T.() -> Unit) { kotlinOptions.fn() } @@ -45,6 +50,8 @@ interface KotlinCompile : Task { /** * Configures the [kotlinOptions] with the provided configuration. */ + @OptIn(InternalKotlinGradlePluginApi::class) + @Deprecated(message = KOTLIN_OPTIONS_DEPRECATION_MESSAGE) fun kotlinOptions(fn: Action) { fn.execute(kotlinOptions) } @@ -57,3 +64,15 @@ interface KotlinCompile : Task { project.configure(kotlinOptions, fn) } } + +/** + * @suppress + */ +@InternalKotlinGradlePluginApi +const val KOTLIN_OPTIONS_DEPRECATION_MESSAGE = "Please migrate to the compilerOptions DSL. More details are here: https://kotl.in/u1r8ln" + +/** + * @suppress + */ +@InternalKotlinGradlePluginApi +const val KOTLIN_OPTIONS_AS_TOOLS_DEPRECATION_MESSAGE = "Please migrate to toolOptions DSL. More details are here: https://kotl.in/u1r8ln" diff --git a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt index 0c2e8080f9a..44f31df7f12 100644 --- a/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin-api/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinCompilation.kt @@ -15,10 +15,10 @@ import org.gradle.api.file.FileCollection import org.gradle.api.file.SourceDirectorySet import org.gradle.api.tasks.TaskProvider import org.jetbrains.kotlin.gradle.ExperimentalKotlinGradlePluginApi -import org.jetbrains.kotlin.gradle.dsl.KotlinCommonCompilerOptions +import org.jetbrains.kotlin.gradle.InternalKotlinGradlePluginApi +import org.jetbrains.kotlin.gradle.dsl.* import org.jetbrains.kotlin.gradle.dsl.KotlinCommonOptionsDeprecated import org.jetbrains.kotlin.gradle.dsl.KotlinCompileDeprecated -import org.jetbrains.kotlin.gradle.dsl.KotlinGradlePluginDsl import org.jetbrains.kotlin.gradle.tasks.KotlinCompilationTask import org.jetbrains.kotlin.tooling.core.HasMutableExtras @@ -95,13 +95,25 @@ interface KotlinCompilation : Named, val compileTaskProvider: TaskProvider> + @OptIn(InternalKotlinGradlePluginApi::class) + @Deprecated( + message = KOTLIN_OPTIONS_DEPRECATION_MESSAGE + ) val kotlinOptions: T + @OptIn(InternalKotlinGradlePluginApi::class) + @Deprecated( + message = KOTLIN_OPTIONS_DEPRECATION_MESSAGE + ) fun kotlinOptions(configure: T.() -> Unit) { @Suppress("DEPRECATION") configure(kotlinOptions) } + @OptIn(InternalKotlinGradlePluginApi::class) + @Deprecated( + message = KOTLIN_OPTIONS_DEPRECATION_MESSAGE + ) fun kotlinOptions(configure: Action<@UnsafeVariance T>) { @Suppress("DEPRECATION") configure.execute(kotlinOptions) diff --git a/libraries/tools/kotlin-gradle-plugin-tcs-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/PrototypeAndroidCompilation.kt b/libraries/tools/kotlin-gradle-plugin-tcs-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/PrototypeAndroidCompilation.kt index eedd565f313..a20b194b21e 100644 --- a/libraries/tools/kotlin-gradle-plugin-tcs-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/PrototypeAndroidCompilation.kt +++ b/libraries/tools/kotlin-gradle-plugin-tcs-android/src/main/kotlin/org/jetbrains/kotlin/gradle/android/PrototypeAndroidCompilation.kt @@ -14,6 +14,7 @@ import org.jetbrains.kotlin.gradle.plugin.HasCompilerOptions import org.jetbrains.kotlin.gradle.plugin.mpp.external.DecoratedExternalKotlinCompilation class PrototypeAndroidCompilation(delegate: Delegate) : DecoratedExternalKotlinCompilation(delegate) { + @Suppress("OVERRIDE_DEPRECATION") override val kotlinOptions: KotlinCommonOptions get() = super.kotlinOptions as KotlinJvmOptions diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationImpl.kt index 401cb82390f..fe4c8727de1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/compilationImpl/KotlinCompilationImpl.kt @@ -169,6 +169,7 @@ internal class KotlinCompilationImpl constructor( //region CompilerOptions & KotlinOptions + @Suppress("OVERRIDE_DEPRECATION") override val kotlinOptions: KotlinCommonOptions get() = params.kotlinOptions diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt index c9b412919ca..fbb85b730a7 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/kotlinCompilations.kt @@ -94,6 +94,7 @@ internal fun filterModuleName(moduleName: String): String = moduleName.replace(invalidModuleNameCharactersRegex, "_") internal inline fun InternalKotlinCompilation<*>.castKotlinOptionsType(): InternalKotlinCompilation { + @Suppress("DEPRECATION") this.kotlinOptions as T @Suppress("UNCHECKED_CAST") return this as InternalKotlinCompilation