diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainer.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainer.kt index 03ca4cd9d42..a34b8eaeb5f 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainer.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainer.kt @@ -9,6 +9,7 @@ import org.jetbrains.kotlin.gradle.kpm.idea.InternalKotlinGradlePluginApi import java.io.Serializable abstract class KotlinExternalModelContainer internal constructor() : Serializable { + abstract val ids: Set> abstract operator fun contains(key: KotlinExternalModelKey): Boolean abstract operator fun get(key: KotlinExternalModelKey): T? fun getOrThrow(key: KotlinExternalModelKey): T = get(key) @@ -20,6 +21,7 @@ abstract class KotlinExternalModelContainer internal constructor() : Serializabl } object Empty : KotlinExternalModelContainer() { + override val ids: Set> = emptySet() override fun contains(key: KotlinExternalModelKey): Boolean = false override fun get(key: KotlinExternalModelKey): T? = null } diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt index 5c527e4a401..76f75cde962 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/kpm/KotlinExternalModelContainerImpl.kt @@ -11,6 +11,9 @@ import java.io.Serializable internal class KotlinMutableExternalModelContainerImpl : KotlinMutableExternalModelContainer(), Serializable { private val values = mutableMapOf, Any>() + override val ids: Set> + @Synchronized get() = values.keys.map { it.id }.toSet() + @Synchronized override fun set(key: KotlinExternalModelKey, value: T) { values[key] = value @@ -47,6 +50,9 @@ private class SerializedKotlinExternalModelContainer( private val deserializedValues = mutableMapOf, Any>() + override val ids: Set> + @Synchronized get() = serializedValues.keys + deserializedValues.keys + @Synchronized override fun contains(key: KotlinExternalModelKey): Boolean { return key.id in deserializedValues || key.id in serializedValues