[Gradle] Deprecate KotlinCompilation.compilerOptions
Users quite often confuse that compilerOptions in KotlinCompilation is actually the same object in the Kotlin compilation task. We want to make our API more straightforward and remove this ambiguity by proposing to use task compiler options DSL. ^KT-65568 Verification Pending
This commit is contained in:
committed by
Space Team
parent
5df05d5797
commit
d662f72d07
@@ -92,22 +92,22 @@ kotlin {
|
||||
browser {}
|
||||
}
|
||||
nodejs {}
|
||||
compilations["main"].compilerOptions.configure {
|
||||
freeCompilerArgs.add("-Xir-module-name=kotlin-test")
|
||||
compilations["main"].compileTaskProvider.configure {
|
||||
compilerOptions.freeCompilerArgs.add("-Xir-module-name=kotlin-test")
|
||||
}
|
||||
}
|
||||
@OptIn(ExperimentalWasmDsl::class)
|
||||
wasmJs {
|
||||
nodejs()
|
||||
compilations["main"].compilerOptions.configure {
|
||||
freeCompilerArgs.add("-Xir-module-name=kotlin-test")
|
||||
compilations["main"].compileTaskProvider.configure {
|
||||
compilerOptions.freeCompilerArgs.add("-Xir-module-name=kotlin-test")
|
||||
}
|
||||
}
|
||||
@OptIn(ExperimentalWasmDsl::class)
|
||||
wasmWasi {
|
||||
nodejs()
|
||||
compilations["main"].compilerOptions.configure {
|
||||
freeCompilerArgs.add("-Xir-module-name=kotlin-test")
|
||||
compilations["main"].compileTaskProvider.configure {
|
||||
compilerOptions.freeCompilerArgs.add("-Xir-module-name=kotlin-test")
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+4
@@ -59,6 +59,10 @@ interface KotlinCompilation<out T : KotlinCommonOptionsDeprecated> : Named,
|
||||
|
||||
val compileKotlinTaskName: String
|
||||
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
@Suppress("DEPRECATION")
|
||||
val compilerOptions: HasCompilerOptions<*>
|
||||
|
||||
|
||||
+4
@@ -17,6 +17,10 @@ class PrototypeAndroidCompilation(delegate: Delegate) : DecoratedExternalKotlinC
|
||||
override val kotlinOptions: KotlinCommonOptions
|
||||
get() = super.kotlinOptions as KotlinJvmOptions
|
||||
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
override val compilerOptions: HasCompilerOptions<KotlinJvmCompilerOptions>
|
||||
get() = super.compilerOptions as HasCompilerOptions<KotlinJvmCompilerOptions>
|
||||
|
||||
+1
-1
@@ -57,7 +57,7 @@ internal sealed class KotlinCompilationInfo {
|
||||
override val moduleName: String
|
||||
get() = origin.moduleNameForCompilation().get()
|
||||
|
||||
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION", "DEPRECATION")
|
||||
override val compilerOptions: DeprecatedHasCompilerOptions<*>
|
||||
get() = origin.compilerOptions
|
||||
|
||||
|
||||
+1
-1
@@ -15,7 +15,7 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.moduleNameForCompilation
|
||||
|
||||
internal object KotlinCompilationCompilerOptionsFromTargetConfigurator : KotlinCompilationImplFactory.PostConfigure {
|
||||
override fun configure(compilation: DecoratedKotlinCompilation<*>) {
|
||||
when (val compilationCompilerOptions = compilation.compilerOptions.options) {
|
||||
when (@Suppress("DEPRECATION") val compilationCompilerOptions = compilation.compilerOptions.options) {
|
||||
is KotlinJvmCompilerOptions -> compilation.configureJvmCompilerOptions(compilationCompilerOptions)
|
||||
is KotlinJsCompilerOptions -> compilation.configureJsCompilerOptions(compilationCompilerOptions)
|
||||
is KotlinNativeCompilerOptions -> {
|
||||
|
||||
+4
@@ -172,6 +172,10 @@ internal class KotlinCompilationImpl constructor(
|
||||
override val kotlinOptions: KotlinCommonOptions
|
||||
get() = params.kotlinOptions
|
||||
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
@Suppress("TYPEALIAS_EXPANSION_DEPRECATION")
|
||||
override val compilerOptions: DeprecatedHasCompilerOptions<*>
|
||||
get() = params.compilerOptions
|
||||
|
||||
+1
@@ -35,6 +35,7 @@ internal object KotlinCompilationLanguageSettingsConfigurator : KotlinCompilatio
|
||||
return
|
||||
}
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
languageSettingsBuilder
|
||||
.compilationCompilerOptions
|
||||
.complete(compilation.compilerOptions.options)
|
||||
|
||||
+1
@@ -33,6 +33,7 @@ internal val KotlinCreateNativeCompileTasksSideEffect = KotlinCompilationSideEff
|
||||
|
||||
val kotlinNativeCompile = project.registerTask<KotlinNativeCompile>(
|
||||
compilation.compileKotlinTaskName,
|
||||
@Suppress("DEPRECATION")
|
||||
listOf(compilationInfo, compilation.compilerOptions.options)
|
||||
) { task ->
|
||||
task.group = BasePlugin.BUILD_GROUP
|
||||
|
||||
+1
-1
@@ -188,7 +188,7 @@ internal class AndroidProjectHandler(
|
||||
task.destinationDirectory.set(project.layout.buildDirectory.dir("tmp/kotlin-classes/$variantDataName"))
|
||||
task.description = "Compiles the $variantDataName kotlin."
|
||||
}
|
||||
val kotlinTask = tasksProvider.registerKotlinJVMTask(
|
||||
@Suppress("DEPRECATION") val kotlinTask = tasksProvider.registerKotlinJVMTask(
|
||||
project,
|
||||
compilation.compileKotlinTaskName,
|
||||
compilation.compilerOptions.options,
|
||||
|
||||
+6
-9
@@ -31,18 +31,14 @@ open class KotlinJsCompilation @Inject internal constructor(
|
||||
) : DeprecatedAbstractKotlinCompilationToRunnableFiles<KotlinJsOptions>(compilation),
|
||||
HasBinaries<KotlinJsBinaryContainer> {
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
@Suppress("UNCHECKED_CAST", "DEPRECATION")
|
||||
final override val compilerOptions: DeprecatedHasCompilerOptions<KotlinJsCompilerOptions>
|
||||
get() = compilation.compilerOptions as DeprecatedHasCompilerOptions<KotlinJsCompilerOptions>
|
||||
|
||||
internal fun compilerOptions(configure: KotlinJsCompilerOptions.() -> Unit) {
|
||||
compilerOptions.configure(configure)
|
||||
}
|
||||
|
||||
internal fun compilerOptions(configure: Action<KotlinJsCompilerOptions>) {
|
||||
configure.execute(compilerOptions.options)
|
||||
}
|
||||
|
||||
override val binaries: KotlinJsBinaryContainer =
|
||||
compilation.target.project.objects.newInstance(
|
||||
KotlinJsBinaryContainer::class.java,
|
||||
@@ -107,6 +103,7 @@ open class KotlinJsCompilation @Inject internal constructor(
|
||||
val KotlinJsCompilation.fileExtension: Provider<String>
|
||||
get() {
|
||||
val isWasm = platformType == KotlinPlatformType.wasm
|
||||
@Suppress("DEPRECATION")
|
||||
return compilerOptions.options.moduleKind.map { moduleKind ->
|
||||
if (isWasm || moduleKind == JsModuleKind.MODULE_ES) {
|
||||
"mjs"
|
||||
|
||||
+1
@@ -57,6 +57,7 @@ abstract class KotlinJsIrSubTarget(
|
||||
internal fun configure() {
|
||||
target.compilations.all {
|
||||
val npmProject = it.npmProject
|
||||
@Suppress("DEPRECATION")
|
||||
it.compilerOptions.options.freeCompilerArgs.add("$PER_MODULE_OUTPUT_NAME=${npmProject.name}")
|
||||
}
|
||||
|
||||
|
||||
+5
-9
@@ -6,7 +6,6 @@
|
||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.provider.Property
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
@@ -27,17 +26,14 @@ open class KotlinJvmAndroidCompilation @Inject internal constructor(
|
||||
|
||||
override val target: KotlinAndroidTarget = compilation.target as KotlinAndroidTarget
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
override val compilerOptions: DeprecatedHasCompilerOptions<KotlinJvmCompilerOptions> =
|
||||
compilation.compilerOptions.castCompilerOptionsType()
|
||||
|
||||
internal fun compilerOptions(configure: KotlinJvmCompilerOptions.() -> Unit) {
|
||||
compilerOptions.configure(configure)
|
||||
}
|
||||
|
||||
internal fun compilerOptions(configure: Action<KotlinJvmCompilerOptions>) {
|
||||
configure.execute(compilerOptions.options)
|
||||
}
|
||||
|
||||
internal val testedVariantArtifacts: Property<FileCollection> =
|
||||
compilation.project.objects.property(FileCollection::class.java)
|
||||
|
||||
|
||||
+5
-9
@@ -6,7 +6,6 @@
|
||||
@file:Suppress("PackageDirectoryMismatch") // Old package for compatibility
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.tasks.SourceSet
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
@@ -33,17 +32,14 @@ open class KotlinJvmCompilation @Inject internal constructor(
|
||||
|
||||
final override val target: KotlinJvmTarget = compilation.target as KotlinJvmTarget
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
override val compilerOptions: DeprecatedHasCompilerOptions<KotlinJvmCompilerOptions> =
|
||||
compilation.compilerOptions.castCompilerOptionsType()
|
||||
|
||||
internal fun compilerOptions(configure: KotlinJvmCompilerOptions.() -> Unit) {
|
||||
compilerOptions.configure(configure)
|
||||
}
|
||||
|
||||
internal fun compilerOptions(configure: Action<KotlinJvmCompilerOptions>) {
|
||||
configure.execute(compilerOptions.options)
|
||||
}
|
||||
|
||||
@Deprecated("Replaced with compileTaskProvider", replaceWith = ReplaceWith("compileTaskProvider"))
|
||||
@Suppress("UNCHECKED_CAST", "DEPRECATION")
|
||||
override val compileKotlinTaskProvider: TaskProvider<out org.jetbrains.kotlin.gradle.tasks.KotlinCompile>
|
||||
|
||||
+1
@@ -62,6 +62,7 @@ class KotlinJvmWithJavaTargetPreset(
|
||||
}
|
||||
|
||||
target.compilations.configureEach {
|
||||
@Suppress("DEPRECATION")
|
||||
it.compilerOptions.options.moduleName.convention(
|
||||
it.moduleNameForCompilation()
|
||||
)
|
||||
|
||||
+5
-10
@@ -6,7 +6,6 @@
|
||||
@file:Suppress("PackageDirectoryMismatch", "UNCHECKED_CAST") // Old package for compatibility
|
||||
package org.jetbrains.kotlin.gradle.plugin.mpp
|
||||
|
||||
import org.gradle.api.Action
|
||||
import org.gradle.api.tasks.SourceSet
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.compile.JavaCompile
|
||||
@@ -25,18 +24,14 @@ open class KotlinWithJavaCompilation<KotlinOptionsType : KotlinCommonOptions, CO
|
||||
) : DeprecatedAbstractKotlinCompilationToRunnableFiles<KotlinOptionsType>(compilation),
|
||||
DeprecatedKotlinCompilationWithResources<KotlinOptionsType> {
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
@Suppress("UNCHECKED_CAST", "DEPRECATION")
|
||||
override val compilerOptions: DeprecatedHasCompilerOptions<CO> =
|
||||
compilation.compilerOptions as DeprecatedHasCompilerOptions<CO>
|
||||
|
||||
internal fun compilerOptions(configure: CO.() -> Unit) {
|
||||
compilerOptions.configure(configure)
|
||||
}
|
||||
|
||||
internal fun compilerOptions(configure: Action<CO>) {
|
||||
configure.execute(compilerOptions.options)
|
||||
}
|
||||
|
||||
val compileJavaTaskProvider: TaskProvider<out JavaCompile>
|
||||
get() = target.project.tasks.withType(JavaCompile::class.java).named(javaSourceSet.compileJavaTaskName)
|
||||
|
||||
|
||||
+1
-1
@@ -75,7 +75,7 @@ private fun Project.createLinkTask(binary: NativeBinary) {
|
||||
// workaround for too late compilation compilerOptions creation
|
||||
// which leads to not able run project.afterEvaluate because of wrong context
|
||||
// this afterEvaluate comes from NativeCompilerOptions
|
||||
val compilationCompilerOptions = binary.compilation.compilerOptions
|
||||
@Suppress("DEPRECATION") val compilationCompilerOptions = binary.compilation.compilerOptions
|
||||
val konanPropertiesBuildService = KonanPropertiesBuildService.registerIfAbsent(project)
|
||||
val xcodeVersionTask = XcodeVersionTask.locateOrRegister(project)
|
||||
val linkTask = registerTask<KotlinNativeLink>(
|
||||
|
||||
+10
-9
@@ -40,18 +40,14 @@ abstract class AbstractKotlinNativeCompilation internal constructor(
|
||||
override val compileTaskProvider: TaskProvider<KotlinNativeCompile>
|
||||
get() = compilation.compileTaskProvider as TaskProvider<KotlinNativeCompile>
|
||||
|
||||
@Suppress("UNCHECKED_CAST")
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
@Suppress("UNCHECKED_CAST", "DEPRECATION")
|
||||
override val compilerOptions: DeprecatedHasCompilerOptions<KotlinNativeCompilerOptions>
|
||||
get() = compilation.compilerOptions as DeprecatedHasCompilerOptions<KotlinNativeCompilerOptions>
|
||||
|
||||
internal fun compilerOptions(configure: KotlinNativeCompilerOptions.() -> Unit) {
|
||||
compilerOptions.configure(configure)
|
||||
}
|
||||
|
||||
internal fun compilerOptions(configure: Action<KotlinNativeCompilerOptions>) {
|
||||
configure.execute(compilerOptions.options)
|
||||
}
|
||||
|
||||
internal val useGenericPluginArtifact: Boolean
|
||||
get() = project.nativeUseEmbeddableCompilerJar
|
||||
}
|
||||
@@ -63,6 +59,11 @@ open class KotlinNativeCompilation @Inject internal constructor(
|
||||
final override val target: KotlinNativeTarget
|
||||
get() = compilation.target as KotlinNativeTarget
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
override val compilerOptions: NativeCompilerOptions
|
||||
get() = super.compilerOptions as NativeCompilerOptions
|
||||
|
||||
|
||||
+1
-1
@@ -34,7 +34,7 @@ internal class KaptGenerateStubsConfig : BaseKotlinCompileConfig<KaptGenerateStu
|
||||
|
||||
configureTask { kaptGenerateStubsTask ->
|
||||
// Syncing compiler options from related KotlinJvmCompile task
|
||||
val jvmCompilerOptions = compilation.compilerOptions.options as KotlinJvmCompilerOptions
|
||||
@Suppress("DEPRECATION") val jvmCompilerOptions = compilation.compilerOptions.options as KotlinJvmCompilerOptions
|
||||
KotlinJvmCompilerOptionsHelper.syncOptionsAsConvention(
|
||||
from = jvmCompilerOptions,
|
||||
into = kaptGenerateStubsTask.compilerOptions
|
||||
|
||||
+2
@@ -142,7 +142,9 @@ class BuildKotlinToolingMetadataTest {
|
||||
project.plugins.apply("kotlin-multiplatform")
|
||||
val kotlin = multiplatformExtension
|
||||
val jvm = kotlin.jvm()
|
||||
@Suppress("DEPRECATION")
|
||||
jvm.compilations.getByName(KotlinCompilation.MAIN_COMPILATION_NAME).compilerOptions.options.jvmTarget.set(JvmTarget.JVM_12)
|
||||
@Suppress("DEPRECATION")
|
||||
jvm.compilations.getByName(KotlinCompilation.TEST_COMPILATION_NAME).compilerOptions.options.jvmTarget.set(JvmTarget.JVM_10)
|
||||
|
||||
assertEquals(
|
||||
|
||||
+1
@@ -105,6 +105,7 @@ class K2MultiplatformStructureTest {
|
||||
|
||||
/* Enable K2 if necessary */
|
||||
if (KotlinVersion.DEFAULT < KotlinVersion.KOTLIN_2_0) {
|
||||
@Suppress("Deprecation")
|
||||
compilation.compilerOptions.options.languageVersion.set(KotlinVersion.KOTLIN_2_0)
|
||||
}
|
||||
|
||||
|
||||
+2
@@ -97,6 +97,7 @@ class KotlinCompileArgumentsTest {
|
||||
kotlin.jvm()
|
||||
|
||||
val jvmMainCompilation = kotlin.jvm().compilations.getByName("main")
|
||||
@Suppress("DEPRECATION")
|
||||
jvmMainCompilation.compilerOptions.options.languageVersion.set(KotlinVersion.KOTLIN_2_0)
|
||||
|
||||
project.evaluate()
|
||||
@@ -116,6 +117,7 @@ class KotlinCompileArgumentsTest {
|
||||
val kotlin = project.multiplatformExtension
|
||||
kotlin.jvm()
|
||||
val compilation = kotlin.jvm().compilations.main
|
||||
@Suppress("DEPRECATION")
|
||||
compilation.compilerOptions.options.languageVersion.set(KotlinVersion.KOTLIN_2_0)
|
||||
val compileTask = compilation.compileTaskProvider.get() as KotlinCompile
|
||||
|
||||
|
||||
+3
-1
@@ -25,6 +25,7 @@ class KotlinNativeCompilationModuleNameTest {
|
||||
|
||||
project.evaluate()
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
assertEquals(
|
||||
PROJECT_NAME,
|
||||
linuxX64Target.compilations.main.compilerOptions.options.moduleName.get(),
|
||||
@@ -43,6 +44,7 @@ class KotlinNativeCompilationModuleNameTest {
|
||||
|
||||
project.evaluate()
|
||||
|
||||
@Suppress("DEPRECATION")
|
||||
assertEquals(
|
||||
"${PROJECT_NAME}_test",
|
||||
linuxX64Target.compilations.test.compilerOptions.options.moduleName.get(),
|
||||
@@ -66,7 +68,7 @@ class KotlinNativeCompilationModuleNameTest {
|
||||
|
||||
project.evaluate()
|
||||
|
||||
val compilerOptions = project
|
||||
@Suppress("DEPRECATION") val compilerOptions = project
|
||||
.multiplatformExtension
|
||||
.metadata()
|
||||
.compilations
|
||||
|
||||
+1
@@ -92,6 +92,7 @@ class KotlinNativeCompileArgumentsTest {
|
||||
val kotlin = project.multiplatformExtension
|
||||
val linuxX64Target = kotlin.linuxX64()
|
||||
linuxX64Target.compilations.all {
|
||||
@Suppress("DEPRECATION")
|
||||
it.compilerOptions.options.apply {
|
||||
optIn.add("my.OptIn")
|
||||
optIn.add("my.other.OptIn")
|
||||
|
||||
+4
@@ -14,6 +14,10 @@ import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinCompilation
|
||||
import org.jetbrains.kotlin.gradle.plugin.mpp.external.ExternalKotlinTargetDescriptor.TargetFactory
|
||||
|
||||
class FakeCompilation(delegate: Delegate) : DecoratedExternalKotlinCompilation(delegate) {
|
||||
@Deprecated(
|
||||
"To configure compilation compiler options use 'compileTaskProvider':\ncompilation.compileTaskProvider.configure{\n" +
|
||||
" compilerOptions {}\n}"
|
||||
)
|
||||
@Suppress("UNCHECKED_CAST", "DEPRECATION")
|
||||
override val compilerOptions: HasCompilerOptions<KotlinJvmCompilerOptions>
|
||||
get() = super.compilerOptions as HasCompilerOptions<KotlinJvmCompilerOptions>
|
||||
|
||||
Reference in New Issue
Block a user