diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index c68d1246dc4..16de4277a40 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -215,6 +215,28 @@ class KotlinGradleIT : KGPBaseTest() { } } + @DisplayName("KT-52239: Changing Kotlin options via deprecated 'dsl.KotlinJvmOptions' interface") + @GradleTest + fun testKotlinOptionsViaDeprecatedKotlinJvmOptionsDsl(gradleVersion: GradleVersion) { + project("kotlinProject", gradleVersion) { + val customModuleName = "custom_module_name" + + buildGradle.appendText( + //language=Groovy + """ + + tasks.withType(org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile.class).configureEach { + kotlinOptions.moduleName = "$customModuleName" + } + """.trimIndent() + ) + + build("assemble") { + assertFileExists(kotlinClassesDir().resolve("META-INF/$customModuleName.kotlin_module")) + } + } + } + @DisplayName("Downgrading Kotlin plugin version") @GradleTest fun testDowngradePluginVersion(gradleVersion: GradleVersion) { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt index 0671247b0d6..8454e83c99d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/dsl/KotlinCompile.kt @@ -20,6 +20,7 @@ import groovy.lang.Closure import org.gradle.api.Task import org.gradle.api.tasks.Input import org.gradle.api.tasks.Internal +import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile as KotlinJvmCompileApi interface KotlinJsCompile : KotlinCompile @@ -27,7 +28,7 @@ interface KotlinJsCompile : KotlinCompile message = "Moved into API artifact", replaceWith = ReplaceWith("KotlinJvmCompile", "org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile") ) -interface KotlinJvmCompile : KotlinCompile +interface KotlinJvmCompile : KotlinJvmCompileApi interface KotlinCommonCompile : KotlinCompile diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJvmCompileDsl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJvmCompileDsl.kt new file mode 100644 index 00000000000..f6e0e85f9e3 --- /dev/null +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJvmCompileDsl.kt @@ -0,0 +1,12 @@ +/* + * Copyright 2010-2022 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.gradle.tasks + +/** + * Workaround for deprecation warning in import. + */ +@Suppress("DEPRECATION") +typealias KotlinJvmCompileDsl = org.jetbrains.kotlin.gradle.dsl.KotlinJvmCompile diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index c382f6aa754..acf4a0c14a5 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -506,7 +506,7 @@ abstract class KotlinCompile @Inject constructor( workerExecutor: WorkerExecutor, private val objectFactory: ObjectFactory ) : AbstractKotlinCompile(objectFactory), - KotlinJvmCompile, + @Suppress("TYPEALIAS_EXPANSION_DEPRECATION") KotlinJvmCompileDsl, UsesKotlinJavaToolchain { /** A package prefix that is used for locating Java sources in a directory structure with non-full-depth packages.