Do not use ApplicationExtensionDescriptor in JPS (KT-26542)

The 'ExtensionPointName' class that ApplicationExtensionDescriptor uses is missing in the JPS classpath.
Now we don't use it unless the IDEA Application is properly initialized.

Original commit: 7398a8149d
This commit is contained in:
Yan Zhulanow
2018-09-04 01:59:50 +03:00
parent aa1eb9795d
commit c5bce70edb
@@ -27,19 +27,18 @@ abstract class IdePlatformKind<Kind : IdePlatformKind<Kind>> {
override fun equals(other: Any?): Boolean = javaClass == other?.javaClass override fun equals(other: Any?): Boolean = javaClass == other?.javaClass
override fun hashCode(): Int = javaClass.hashCode() override fun hashCode(): Int = javaClass.hashCode()
companion object : ApplicationExtensionDescriptor<IdePlatformKind<*>>( companion object {
"org.jetbrains.kotlin.idePlatformKind", IdePlatformKind::class.java // We can't use the ApplicationExtensionDescriptor class directly because it's missing in the JPS process
) { private val extension = ApplicationManager.getApplication()?.let {
ApplicationExtensionDescriptor("org.jetbrains.kotlin.idePlatformKind", IdePlatformKind::class.java)
}
// For using only in JPS // For using only in JPS
private val JPS_KINDS = listOf(JvmIdePlatformKind, JsIdePlatformKind, CommonIdePlatformKind) private val JPS_KINDS get() = listOf(JvmIdePlatformKind, JsIdePlatformKind, CommonIdePlatformKind)
val ALL_KINDS by lazy { val ALL_KINDS by lazy {
if (ApplicationManager.getApplication() == null) { val kinds = extension?.getInstances() ?: return@lazy JPS_KINDS
return@lazy JPS_KINDS require(kinds.isNotEmpty()) { "Platform kind list is empty" }
}
val kinds = getInstances()
require(kinds.isNotEmpty()) { "Platform list is empty" }
kinds kinds
} }