From 76ac65f723b1b7d008d75e8f430c8723e8a8abae Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Wed, 20 Jun 2018 16:38:04 +0300 Subject: [PATCH] Configuration: Use soft references to keep library kind cache #KT-24943 Fixed --- .../framework/LibraryEffectiveKindProviderImpl.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/LibraryEffectiveKindProviderImpl.kt b/idea/src/org/jetbrains/kotlin/idea/framework/LibraryEffectiveKindProviderImpl.kt index 70f8d3c25ee..2337929a73e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/LibraryEffectiveKindProviderImpl.kt +++ b/idea/src/org/jetbrains/kotlin/idea/framework/LibraryEffectiveKindProviderImpl.kt @@ -12,11 +12,13 @@ import com.intellij.openapi.roots.ModuleRootListener import com.intellij.openapi.roots.OrderRootType import com.intellij.openapi.roots.impl.libraries.LibraryEx import com.intellij.openapi.roots.libraries.PersistentLibraryKind -import java.util.* +import com.intellij.util.containers.SoftFactoryMap class LibraryEffectiveKindProviderImpl(project: Project) : LibraryEffectiveKindProvider { companion object { - private val effectiveKindMap = HashMap?>() + private val effectiveKindMap = object : SoftFactoryMap?>() { + override fun create(key: LibraryEx) = detectLibraryKind(key.getFiles(OrderRootType.CLASSES)) + } } init { @@ -36,10 +38,8 @@ class LibraryEffectiveKindProviderImpl(project: Project) : LibraryEffectiveKindP val kind = library.kind return when (kind) { is KotlinLibraryKind -> kind - else -> { - synchronized(effectiveKindMap) { - effectiveKindMap.getOrPut(library) { detectLibraryKind(library.getFiles(OrderRootType.CLASSES)) } - } + else -> synchronized(effectiveKindMap) { + effectiveKindMap.get(library) } } }