From ebcc6eec97ca02862d8b17a730da9e55d390e94d Mon Sep 17 00:00:00 2001 From: Andrey Uskov Date: Fri, 20 Aug 2021 15:55:09 +0300 Subject: [PATCH] Fixed setting target version if toolchain is not set #KT-48226 Fixed --- .../kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt index daf58205be3..3a8818b0a72 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt @@ -42,6 +42,9 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor( .property(Jvm.current()) .chainedFinalizeValueOnRead() + @get:Internal + internal var providedJvmExplicitlySet = false + @get:Internal internal val providedJvm: Property = objects .propertyWithConvention(currentJvm) @@ -115,6 +118,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor( providedJvm, currentGradleVersion, objects, + { providedJvmExplicitlySet = true }, kotlinCompileTaskProvider ) @@ -146,7 +150,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor( "\"updateJvmTarget()\" method should be called only on task execution!" } - if (providedJvm.isPresent) { + if (providedJvmExplicitlySet) { val jdkVersion = javaVersion.get() // parentKotlinOptionsImpl is set from 'kotlin-android' plugin @@ -195,6 +199,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor( private val providedJvm: Property, private val currentGradleVersion: GradleVersion, private val objects: ObjectFactory, + private val updateProvidedJdkCallback: () -> Unit, kotlinCompileTaskProvider: () -> KotlinCompile? ) : JvmTargetUpdater(kotlinCompileTaskProvider), KotlinJavaToolchain.JdkSetter { @@ -210,6 +215,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor( "Supplied jdkHomeLocation does not exists. You supplied: $jdkHomeLocation" } + updateProvidedJdkCallback.invoke() providedJvm.set( objects.providerWithLazyConvention { updateJvmTarget(jdkVersion) @@ -234,6 +240,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor( override fun use( javaLauncher: Provider ) { + providedJvmExplicitlySet = true providedJvm.set( javaLauncher.map { val metadata = javaLauncher.get().metadata