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.
This commit is contained in:
Yan Zhulanow
2018-09-04 01:59:50 +03:00
parent 0eba87b571
commit 7398a8149d
2 changed files with 10 additions and 11 deletions
@@ -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
}
@@ -70,7 +70,7 @@ class FrameworkLibraryValidatorWithDynamicDescription(
val targetPlatform = getPlatform()
if (checkLibraryIsConfigured(targetPlatform)) {
val conflictingPlatforms = IdePlatformKind.getInstances()
val conflictingPlatforms = IdePlatformKind.ALL_KINDS
.filter { !it.isCommon && it.name != targetPlatform.name && checkLibraryIsConfigured(it) }
if (conflictingPlatforms.isNotEmpty()) {