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 hashCode(): Int = javaClass.hashCode()
companion object : ApplicationExtensionDescriptor<IdePlatformKind<*>>(
"org.jetbrains.kotlin.idePlatformKind", IdePlatformKind::class.java
) {
companion object {
// 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
private val JPS_KINDS = listOf(JvmIdePlatformKind, JsIdePlatformKind, CommonIdePlatformKind)
private val JPS_KINDS get() = listOf(JvmIdePlatformKind, JsIdePlatformKind, CommonIdePlatformKind)
val ALL_KINDS by lazy {
if (ApplicationManager.getApplication() == null) {
return@lazy JPS_KINDS
}
val kinds = getInstances()
require(kinds.isNotEmpty()) { "Platform list is empty" }
val kinds = extension?.getInstances() ?: return@lazy JPS_KINDS
require(kinds.isNotEmpty()) { "Platform kind list is empty" }
kinds
}