diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt index f983301e24a..6bf41406943 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/resolve/KotlinCacheServiceImpl.kt @@ -182,9 +182,18 @@ class KotlinCacheServiceImpl(val project: Project) : KotlinCacheService { val targetPlatform = files.map { TargetPlatformDetector.getPlatform(it) }.toSet().single() val syntheticFileModule = files.map(KtFile::getModuleInfo).toSet().single() val sdk = syntheticFileModule.sdk - val filesModificationTracker = ModificationTracker { - // TODO: Check getUserData(FILE_OUT_OF_BLOCK_MODIFICATION_COUNT) actually works - files.sumByLong { it.outOfBlockModificationCount + it.modificationStamp } + val filesModificationTracker: ModificationTracker + // File copies are created during completion and receive correct modification events through POM. + // Dummy files created e.g. by J2K do not receive events. + if (files.all { it.originalFile != it }) { + filesModificationTracker = ModificationTracker { + files.sumByLong { it.outOfBlockModificationCount } + } + } + else { + filesModificationTracker = ModificationTracker { + files.sumByLong { it.outOfBlockModificationCount + it.modificationStamp } + } } val dependenciesForSyntheticFileCache = listOf(PsiModificationTracker.OUT_OF_CODE_BLOCK_MODIFICATION_COUNT, filesModificationTracker) val debugName = "completion/highlighting in $syntheticFileModule for files ${files.joinToString { it.name }} for platform $targetPlatform"