From 25371734e8bec980160ce712bae8a262c65620d5 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Wed, 29 May 2019 01:05:43 +0300 Subject: [PATCH] Make `withJava()` safe to call repeatedlt on same target --- .../kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt | 4 +++- .../jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt | 3 +++ 2 files changed, 6 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt index c9c75f2d10c..a3225c828c3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/NewMultiplatformIT.kt @@ -295,7 +295,9 @@ class NewMultiplatformIT : BaseGradleIT() { gradleBuildScript().modify { if (testJavaSupportInJvmTargets) { - it + "\nkotlin.jvm(\"jvm6\").${KotlinJvmTarget::withJava.name}()" + it + "\nkotlin.jvm(\"jvm6\") { " + + "${KotlinJvmTarget::withJava.name.plus("();").repeat(2)} " + // also check that the function is idempotent + "}" } else { it.replace("presets.jvm", "presets.jvmWithJava").replace("jvm(", "targetFromPreset(presets.jvmWithJava, ") }.plus( diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt index 6983df3215b..d5d798fd895 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/targets/jvm/KotlinJvmTarget.kt @@ -31,6 +31,9 @@ class KotlinJvmTarget( @Suppress("unused") // user DSL fun withJava() { + if (withJavaEnabled) + return + project.multiplatformExtension.targets.find { it is KotlinJvmTarget && it.withJavaEnabled } ?.let { existingJavaTarget -> throw InvalidUserCodeException(