From 53ed47ade229164e22377968d737e5f82e25f055 Mon Sep 17 00:00:00 2001 From: Alexey Tsvetkov Date: Thu, 13 Aug 2015 16:30:46 +0300 Subject: [PATCH] Always use class file as inline fun source Original commit: 8cc2e0f68d60f5619564f80c8d9e8488834bf60f --- .../jps/incremental/IncrementalCacheImpl.kt | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) 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 a2718bf2b42..d6cfe82cb32 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 @@ -184,27 +184,25 @@ public class IncrementalCacheImpl( val result = THashSet(FileUtil.PATH_HASHING_STRATEGY) for ((className, functions) in dirtyInlineFunctionsMap.getEntries()) { - val sourceFiles = classToSourcesMap[className] - - for (sourceFile in sourceFiles) { - val targetFiles = functions.flatMap { hasInlineTo[sourceFile, it] } - result.addAll(targetFiles) - } - - var internalName = className.internalName - - if (packagePartMap.isPackagePart(className)) { - val packageInternalName = PackageClassUtils.getPackageClassInternalName(className.packageFqName) - val packageJvmName = JvmClassName.byInternalName(packageInternalName) - internalName = packageJvmName.internalName - } + val internalName = + if (packagePartMap.isPackagePart(className)) { + val packageInternalName = PackageClassUtils.getPackageClassInternalName(className.packageFqName) + val packageJvmName = JvmClassName.byInternalName(packageInternalName) + packageJvmName.internalName + } + else { + className.internalName + } val classFilePath = getClassFilePath(internalName) - for (dependent in dependents) { - val targetFiles = functions.flatMap { dependent.hasInlineTo[classFilePath, it] } + fun addFilesAffectedByChangedInlineFuns(cache: IncrementalCacheImpl) { + val targetFiles = functions.flatMap { cache.hasInlineTo[classFilePath, it] } result.addAll(targetFiles) } + + addFilesAffectedByChangedInlineFuns(this) + dependents.forEach(::addFilesAffectedByChangedInlineFuns) } dirtyInlineFunctionsMap.clean()