Recompile files dependent on inline relationship
Right now, it's always recompiles dependent files, even if inline function has not been changed.
This commit is contained in:
@@ -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()
|
||||
|
||||
@@ -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<String> {
|
||||
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
|
||||
|
||||
Reference in New Issue
Block a user