From 85689f4eb34eb5117cb99417d23907151f6804df Mon Sep 17 00:00:00 2001 From: Yahor Berdnikau Date: Mon, 11 Apr 2022 15:06:39 +0200 Subject: [PATCH] Fix jvmTarget was not set on reusing configuration cache. When project has toolchain configured and on reusing configuration cache, 'filteredMapArguments' input was calculated without actual value of `jvmTarget` provided by toolchain leading to non-UP-TO-DATE KotlinCompile task state. ^KT-51937 Fixed --- .../org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt | 4 +++- .../kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt | 4 ---- .../common/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 5 +---- 3 files changed, 4 insertions(+), 9 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt index 9f3db551e52..543475f75d1 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinJavaToolchainTest.kt @@ -578,7 +578,9 @@ class KotlinJavaToolchainTest : KGPBaseTest() { ) build("assemble") - build("assemble") + build("assemble") { + assertTasksUpToDate(":compileKotlin") + } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt index 2721b354d30..3ffbe721cf0 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/tasks/DefaultKotlinJavaToolchain.kt @@ -129,10 +129,6 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor( task: KotlinCompile, args: K2JVMCompilerArguments ) { - check(task.state.executing) { - "\"updateJvmTarget()\" method should be called only on task execution!" - } - if (providedJvmExplicitlySet) { val jdkVersion = javaVersion.get() 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 89f90cb824d..f144e80cc54 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 @@ -852,10 +852,7 @@ abstract class KotlinCompile @Inject constructor( ) ) - // This method could be called on configuration phase to calculate `filteredArgumentsMap` property - if (state.executing) { - defaultKotlinJavaToolchain.get().updateJvmTarget(this, args) - } + defaultKotlinJavaToolchain.get().updateJvmTarget(this, args) if (reportingSettings().buildReportMode == BuildReportMode.VERBOSE) { args.reportPerf = true