diff --git a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt index 446902f7bee0..4ae397417d56 100644 --- a/platform/configuration-store-impl/src/StateStorageManagerImpl.kt +++ b/platform/configuration-store-impl/src/StateStorageManagerImpl.kt @@ -130,7 +130,8 @@ open class StateStorageManagerImpl(private val rootTagName: String, } } - override final fun getStateStorage(storageSpec: Storage) = getOrCreateStorage(storageSpec.file, storageSpec.roamingType, storageSpec.storageClass.java as Class, storageSpec.stateSplitter.java) + override final fun getStateStorage(storageSpec: Storage) = getOrCreateStorage(storageSpec.file, storageSpec.roamingType, + JavaAnnotationHelperForKotlin.getStorageClass(storageSpec), JavaAnnotationHelperForKotlin.getStateSplitterClass(storageSpec)) protected open fun normalizeFileSpec(fileSpec: String): String { val path = FileUtilRt.toSystemIndependentName(fileSpec) diff --git a/platform/configuration-store-impl/src/com/intellij/configurationStore/JavaAnnotationHelperForKotlin.java b/platform/configuration-store-impl/src/com/intellij/configurationStore/JavaAnnotationHelperForKotlin.java new file mode 100644 index 000000000000..15c552387bd2 --- /dev/null +++ b/platform/configuration-store-impl/src/com/intellij/configurationStore/JavaAnnotationHelperForKotlin.java @@ -0,0 +1,20 @@ +package com.intellij.configurationStore; + +import com.intellij.openapi.components.StateSplitter; +import com.intellij.openapi.components.StateStorage; +import com.intellij.openapi.components.Storage; + +/** + * This class was introduced as a workaround for Kotlin bug (https://youtrack.jetbrains.com/issue/KT-9670) to avoid creation of + * unnecessary instances of KClass + * todo[nik] remove when KT-9670 is fixed + */ +public class JavaAnnotationHelperForKotlin { + public static Class getStorageClass(Storage storage) { + return storage.storageClass(); + } + + public static Class getStateSplitterClass(Storage storage) { + return storage.stateSplitter(); + } +}