diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt index 87ae8f8ce63..a2c4db818c7 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/build/KotlinBuilder.kt @@ -212,6 +212,21 @@ public class KotlinBuilder : ModuleLevelBuilder(BuilderCategory.SOURCE_PROCESSOR } if (IncrementalCompilation.ENABLED) { + val inlines = THashSet(FileUtil.PATH_HASHING_STRATEGY) + + for ((target, files) in filesToCompile.entrySet()) { + val cacheImpl = incrementalCaches[target] + files.forEach { + cacheImpl?.getInlineDependencies(it)?.let { + inlines.addAll(it) + } + } + } + + inlines.forEach { + FSOperations.markDirty(context, CompilationRound.NEXT, File(it)) + } + when (recompilationDecision) { RECOMPILE_ALL_IN_CHUNK_AND_DEPENDANTS -> { allCompiledFiles.clear() diff --git a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt index 42d082f9a76..4f6d9df889a 100644 --- a/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt +++ b/jps/jps-plugin/src/org/jetbrains/kotlin/jps/incremental/IncrementalCacheImpl.kt @@ -29,7 +29,6 @@ import org.jetbrains.kotlin.config.IncrementalCompilation import org.jetbrains.kotlin.descriptors.Visibilities import org.jetbrains.kotlin.jps.build.KotlinBuilder import org.jetbrains.kotlin.jps.incremental.IncrementalCacheImpl.RecompilationDecision.DO_NOTHING -import org.jetbrains.kotlin.jps.incremental.IncrementalCacheImpl.RecompilationDecision.RECOMPILE_ALL_IN_CHUNK_AND_DEPENDANTS import org.jetbrains.kotlin.jps.incremental.IncrementalCacheImpl.RecompilationDecision.RECOMPILE_OTHER_IN_CHUNK_AND_DEPENDANTS import org.jetbrains.kotlin.jps.incremental.IncrementalCacheImpl.RecompilationDecision.RECOMPILE_OTHER_KOTLIN_IN_CHUNK import org.jetbrains.kotlin.load.java.JvmAbi @@ -144,9 +143,12 @@ public class IncrementalCacheImpl(targetDataRoot: File) : StorageOwner, Incremen } } + public fun getInlineDependencies(sourceFile: File): Collection { + return hasInlineTo.getState(sourceFile.getCanonicalPath()) ?: emptyList() + } + private fun getRecompilationDecision(protoChanged: Boolean, constantsChanged: Boolean, inlinesChanged: Boolean) = when { - inlinesChanged -> RECOMPILE_ALL_IN_CHUNK_AND_DEPENDANTS constantsChanged -> RECOMPILE_OTHER_IN_CHUNK_AND_DEPENDANTS protoChanged -> RECOMPILE_OTHER_KOTLIN_IN_CHUNK else -> DO_NOTHING