Fixed setting target version if toolchain is not set

#KT-48226  Fixed
This commit is contained in:
Andrey Uskov
2021-08-20 15:55:09 +03:00
committed by TeamCityServer
parent 41e2deb751
commit ebcc6eec97
@@ -42,6 +42,9 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
.property(Jvm.current()) .property(Jvm.current())
.chainedFinalizeValueOnRead() .chainedFinalizeValueOnRead()
@get:Internal
internal var providedJvmExplicitlySet = false
@get:Internal @get:Internal
internal val providedJvm: Property<Jvm> = objects internal val providedJvm: Property<Jvm> = objects
.propertyWithConvention(currentJvm) .propertyWithConvention(currentJvm)
@@ -115,6 +118,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
providedJvm, providedJvm,
currentGradleVersion, currentGradleVersion,
objects, objects,
{ providedJvmExplicitlySet = true },
kotlinCompileTaskProvider kotlinCompileTaskProvider
) )
@@ -146,7 +150,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
"\"updateJvmTarget()\" method should be called only on task execution!" "\"updateJvmTarget()\" method should be called only on task execution!"
} }
if (providedJvm.isPresent) { if (providedJvmExplicitlySet) {
val jdkVersion = javaVersion.get() val jdkVersion = javaVersion.get()
// parentKotlinOptionsImpl is set from 'kotlin-android' plugin // parentKotlinOptionsImpl is set from 'kotlin-android' plugin
@@ -195,6 +199,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
private val providedJvm: Property<Jvm>, private val providedJvm: Property<Jvm>,
private val currentGradleVersion: GradleVersion, private val currentGradleVersion: GradleVersion,
private val objects: ObjectFactory, private val objects: ObjectFactory,
private val updateProvidedJdkCallback: () -> Unit,
kotlinCompileTaskProvider: () -> KotlinCompile? kotlinCompileTaskProvider: () -> KotlinCompile?
) : JvmTargetUpdater(kotlinCompileTaskProvider), ) : JvmTargetUpdater(kotlinCompileTaskProvider),
KotlinJavaToolchain.JdkSetter { KotlinJavaToolchain.JdkSetter {
@@ -210,6 +215,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
"Supplied jdkHomeLocation does not exists. You supplied: $jdkHomeLocation" "Supplied jdkHomeLocation does not exists. You supplied: $jdkHomeLocation"
} }
updateProvidedJdkCallback.invoke()
providedJvm.set( providedJvm.set(
objects.providerWithLazyConvention { objects.providerWithLazyConvention {
updateJvmTarget(jdkVersion) updateJvmTarget(jdkVersion)
@@ -234,6 +240,7 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
override fun use( override fun use(
javaLauncher: Provider<JavaLauncher> javaLauncher: Provider<JavaLauncher>
) { ) {
providedJvmExplicitlySet = true
providedJvm.set( providedJvm.set(
javaLauncher.map { javaLauncher.map {
val metadata = javaLauncher.get().metadata val metadata = javaLauncher.get().metadata