From 59b6aefe67477259878ef32cd22f6dddf646a1e8 Mon Sep 17 00:00:00 2001 From: Alexander Likhachev Date: Fri, 3 Dec 2021 10:45:28 +0300 Subject: [PATCH] [Gradle] Validate compiler classpath & invoke compiler in single action #KT-50037 Fixed --- .../org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt | 1 + .../kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt | 10 +++++----- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt index f22d2d3353e..cce4fd6ed50 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/KotlinJsDce.kt @@ -92,6 +92,7 @@ abstract class KotlinJsDce : AbstractKotlinCompileTool(), Kotl @TaskAction fun performDce(inputChanges: InputChanges) { + validateCompilerClasspath() // in case of explicit `all` strategy do not perform incremental copy val shouldPerformIncrementalCopy = isDevMode && !isExplicitDevModeAllStrategy diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 14ce845d132..afb77aa754d 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -106,11 +106,10 @@ abstract class AbstractKotlinCompileTool internal val defaultCompilerClasspath: ConfigurableFileCollection = project.objects.fileCollection() - init { - this.doFirst { - require(!defaultCompilerClasspath.isEmpty) { - "Default Kotlin compiler classpath is empty! Task: $path (${this::class.qualifiedName})" - } + protected fun validateCompilerClasspath() { + // Note that the check triggers configuration resolution + require(!defaultCompilerClasspath.isEmpty) { + "Default Kotlin compiler classpath is empty! Task: $path (${this::class.qualifiedName})" } } } @@ -346,6 +345,7 @@ abstract class AbstractKotlinCompile : AbstractKotl } val buildMetrics = metrics.get() buildMetrics.measure(BuildTime.GRADLE_TASK_ACTION) { + validateCompilerClasspath() systemPropertiesService.get().startIntercept() CompilerSystemProperties.KOTLIN_COMPILER_ENVIRONMENT_KEEPALIVE_PROPERTY.value = "true"