From 2c5c15f50371eeae54052c6d2483953326d8ee27 Mon Sep 17 00:00:00 2001 From: Ivan Gavrilovic Date: Thu, 24 Sep 2020 16:50:30 +0200 Subject: [PATCH] Clean-up outputs on non-incremental run Always clean all outputs on non-incremental run of the Kotlin compile task. #KT-38692 Fixed --- .../kotlin/gradle/KotlinGradlePluginIT.kt | 27 +++++++++++++++++++ .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 2 ++ 2 files changed, 29 insertions(+) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt index c7ca33d8a89..98534eeaf69 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/KotlinGradlePluginIT.kt @@ -1053,4 +1053,31 @@ class KotlinGradleIT : BaseGradleIT() { assertTasksExecuted(":lib1:compileDebugKotlin") } } + + /** Regression test for KT-38692. */ + @Test + fun testIncrementalWhenNoKotlinSources() = with( + Project("kotlinProject") + ) { + setupWorkingDir() + assertTrue(this.allKotlinFiles.toList().isNotEmpty()) + build(":compileKotlin") { + assertSuccessful() + assertTasksExecuted(":compileKotlin") + } + + // Remove all Kotlin sources and force non-incremental run + allKotlinFiles.forEach { assertTrue(it.delete()) } + projectDir.resolve("src/main/java/Sample.java").also { + it.parentFile.mkdirs() + it.writeText("public class Sample {}") + } + build("compileKotlin", "--rerun-tasks") { + assertSuccessful() + assertTasksExecuted(":compileKotlin") + val compiledKotlinClasses = fileInWorkingDir(classesDir()).allFilesWithExtension("class").toList() + + assertTrue(compiledKotlinClasses.isEmpty()) + } + } } 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 5df1e0d974f..7329c47862d 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 @@ -334,6 +334,8 @@ abstract class AbstractKotlinCompile() : AbstractKo if (!isIncrementalCompilationEnabled()) { clearLocalState("IC is disabled") + } else if (!inputs.isIncremental) { + clearLocalState("Task cannot run incrementally") } try {