From c341a3e709a65b3a01c4f69f16ae45676baa5a5d Mon Sep 17 00:00:00 2001 From: Nikolay Krasko Date: Wed, 27 Nov 2019 00:58:47 +0300 Subject: [PATCH] Avoid collecting events from other projects in PerModulePackageCacheService (KT-33802) It looks like VFS_CHANGES subscription ignores project boundaries so all events are processed by every listener. If event has a hard reference to project in the requestor field, it might leak through the collection of pending events. An attempt to fix holding test projects through pending events. #KT-33802 Fixed --- .../kotlin/idea/caches/PerModulePackageCacheService.kt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/PerModulePackageCacheService.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/PerModulePackageCacheService.kt index d602a5db47b..321501904f9 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/PerModulePackageCacheService.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/PerModulePackageCacheService.kt @@ -71,6 +71,13 @@ class KotlinPackageContentModificationListener(private val project: Project): Di val vFile = it.file!! vFile.isDirectory || FileTypeRegistry.getInstance().getFileTypeByFileName(vFile.nameSequence) == KotlinFileType.INSTANCE } + .filter { + when (val origin = it.requestor) { + is Project -> origin == project + is PsiManager -> origin.project == project + else -> true + } + } .forEach { event -> service.notifyPackageChange(event) } } }