diff --git a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt index 708e302d89c..55fa0ebff0c 100644 --- a/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt +++ b/libraries/tools/kotlin-gradle-plugin-core/src/main/kotlin/org/jetbrains/kotlin/gradle/tasks/Tasks.kt @@ -335,13 +335,6 @@ open class KotlinCompile() : AbstractKotlinCompile() { } } val dirtyFiles = dirtyKotlinSourcesFromGradle().toSet() - // first dirty files should be found and only then caches cleared - val removedKotlinFiles = removed.filter { it.isKotlinFile() } - targets.forEach { getIncrementalCache(it).let { - it.markOutputClassesDirty(removedKotlinFiles) - it.removeClassfilesBySources(removedKotlinFiles) - }} - return Pair(dirtyFiles, true) } @@ -385,6 +378,12 @@ open class KotlinCompile() : AbstractKotlinCompile() { } while (sourcesToCompile.any() || currentRemoved.any()) { + val removedAndModified = (sourcesToCompile + currentRemoved).toList() + targets.forEach { getIncrementalCache(it).let { + it.markOutputClassesDirty(removedAndModified) + it.removeClassfilesBySources(removedAndModified) + }} + logger.kotlinInfo("compile iteration: ${sourcesToCompile.joinToString{ projectRelativePath(it) }}") val (existingSource, nonExistingSource) = sourcesToCompile.partition { it.isFile }