From a13cf73a5b3d538efa1892c0c3cc422ba935f14f Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Fri, 5 Feb 2016 15:27:39 +0300 Subject: [PATCH] Minor: put files to set KT-8487 --- .../jetbrains/kotlin/incremental/buildUtil.kt | 2 +- .../jetbrains/kotlin/gradle/tasks/Tasks.kt | 24 ++++++++++--------- 2 files changed, 14 insertions(+), 12 deletions(-) diff --git a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt index 9fd25304bb9..f7ba342aff3 100644 --- a/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt +++ b/build-common/src/org/jetbrains/kotlin/incremental/buildUtil.kt @@ -46,7 +46,7 @@ fun Iterable.javaSourceRoots(roots: Iterable): Iterable = .map { findSrcDirRoot(it, roots) } .filterNotNull() -fun makeModuleFile(name: String, isTest: Boolean, outputDir: File, sourcesToCompile: List, javaSourceRoots: Iterable, classpath: Iterable, friendDirs: Iterable): File { +fun makeModuleFile(name: String, isTest: Boolean, outputDir: File, sourcesToCompile: Iterable, javaSourceRoots: Iterable, classpath: Iterable, friendDirs: Iterable): File { val builder = KotlinModuleXmlBuilder() builder.addModule( name, 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 f20b8a7f1be..7106a55dee6 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 @@ -288,9 +288,9 @@ open class KotlinCompile() : AbstractKotlinCompile() { } else listOf()) } - fun dirtyKotlinSourcesFromGradle(): List { + fun dirtyKotlinSourcesFromGradle(): Set { // TODO: handle classpath changes similarly - compare with cashed version (likely a big change, may be costly, some heuristics could be considered) - val modifiedKotlinFiles = modified.filter { it.isKotlinFile() } + val modifiedKotlinFiles = modified.filter { it.isKotlinFile() }.toMutableSet() val lookupSymbols = dirtyLookupSymbolsFromModifiedJavaFiles() + dirtyLookupSymbolsFromRemovedKotlinFiles() @@ -298,13 +298,14 @@ open class KotlinCompile() : AbstractKotlinCompile() { if (lookupSymbols.any()) { val kotlinModifiedFilesSet = modifiedKotlinFiles.toHashSet() - return modifiedKotlinFiles + - lookupSymbols.files( + val dirtyFilesFromLookups = lookupSymbols.files( filesFilter = { it !in kotlinModifiedFilesSet }, logAction = { lookup, files -> logger.kotlinInfo("changes in ${lookup.name} (${lookup.scope}) causes recompilation of ${files.joinToString { projectRelativePath(it) }}") }) + modifiedKotlinFiles.addAll(dirtyFilesFromLookups) } + return modifiedKotlinFiles } @@ -317,7 +318,7 @@ open class KotlinCompile() : AbstractKotlinCompile() { fun allCachesVersions() = allCachesVersions(cachesBaseDir, listOf(cachesBaseDir)) - fun calculateSourcesToCompile(): Pair, Boolean> { + fun calculateSourcesToCompile(): Pair, Boolean> { if (!experimentalIncremental || !isIncrementalRequested || @@ -329,7 +330,7 @@ open class KotlinCompile() : AbstractKotlinCompile() { logger.kotlinInfo(if (!isIncrementalRequested) "clean caches on rebuild" else "classpath changed, rebuilding all kotlin files") targets.forEach { getIncrementalCache(it).clean() } lookupStorage.clean() - return Pair(sources, false) + return Pair(sources.toSet(), false) } val actions = if (isIncrementalRequested) allCachesVersions().map { it.checkVersion() } else listOf(CacheVersion.Action.REBUILD_ALL_KOTLIN) @@ -343,7 +344,7 @@ open class KotlinCompile() : AbstractKotlinCompile() { logger.kotlinInfo("Kotlin global lookup map format changed, rebuilding all kotlin files") targets.forEach { getIncrementalCache(it).clean() } lookupStorage.clean() - return Pair(sources, false) + return Pair(sources.toSet(), false) } CacheVersion.Action.REBUILD_CHUNK -> { logger.kotlinInfo("Clearing caches for " + targets.joinToString { it.name }) @@ -367,7 +368,7 @@ open class KotlinCompile() : AbstractKotlinCompile() { } } } - val dirtyFiles = dirtyKotlinSourcesFromGradle().distinct() + 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 { @@ -447,12 +448,13 @@ open class KotlinCompile() : AbstractKotlinCompile() { compiledSourcesSet.addAll(sourcesToCompile) val dirtyLookups = changes.dirtyLookups(caches.values.asSequence()) - val dirty = dirtyLookups.files( + val newDirtyFiles = dirtyLookups.files( filesFilter = { it !in compiledSourcesSet }, logAction = { lookup, files -> logger.kotlinInfo("changes in ${lookup.name} (${lookup.scope}) causes recompilation of ${files.joinToString { projectRelativePath(it) }}") }) - sourcesToCompile = dirty.filter { it in sources }.toList() + sourcesToCompile = newDirtyFiles.filter { it in sources }.toSet() + if (currentRemoved.any()) { currentRemoved = listOf() } @@ -469,7 +471,7 @@ open class KotlinCompile() : AbstractKotlinCompile() { private fun compileChanged( targets: List, - sourcesToCompile: List, + sourcesToCompile: Set, outputDir: File, args: K2JVMCompilerArguments, getIncrementalCache: (TargetId)->GradleIncrementalCacheImpl,