diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/multiplatformUtil.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/multiplatformUtil.kt index b64c3b0b996..3467f633659 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/multiplatformUtil.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/caches/project/multiplatformUtil.kt @@ -15,6 +15,9 @@ import org.jetbrains.kotlin.analyzer.ModuleInfo import org.jetbrains.kotlin.caches.project.cacheInvalidatingOnRootModifications import org.jetbrains.kotlin.caches.resolve.KotlinCacheService import org.jetbrains.kotlin.config.KotlinFacetSettings +import org.jetbrains.kotlin.config.KotlinMultiplatformVersion +import org.jetbrains.kotlin.config.isHmpp +import org.jetbrains.kotlin.config.isNewMPP import org.jetbrains.kotlin.descriptors.ModuleDescriptor import org.jetbrains.kotlin.idea.caches.project.SourceType.PRODUCTION import org.jetbrains.kotlin.idea.caches.project.SourceType.TEST @@ -28,7 +31,8 @@ import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.isCommon val Module.isNewMPPModule: Boolean - get() = facetSettings?.kind?.isNewMPP ?: false + get() = facetSettings?.mppVersion.isNewMPP || + facetSettings?.mppVersion.isHmpp // TODO: review clients, correct them to use precise checks for MPP version val Module.externalProjectId: String get() = facetSettings?.externalProjectId ?: "" @@ -43,7 +47,7 @@ val Module.isTestModule: Boolean get() = facetSettings?.isTestModule ?: false val KotlinFacetSettings.isMPPModule: Boolean - get() = this.mppVersion?.isMPPModule ?: false + get() = this.mppVersion != null private val Module.facetSettings get() = KotlinFacet.get(this)?.configuration?.settings diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinMultiplatformAnalysisModeComponent.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinMultiplatformAnalysisModeComponent.kt index 822501134fe..5317a5c6504 100644 --- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinMultiplatformAnalysisModeComponent.kt +++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/KotlinMultiplatformAnalysisModeComponent.kt @@ -12,6 +12,7 @@ import com.intellij.openapi.util.registry.Registry import com.intellij.util.text.nullize import org.jetbrains.kotlin.caches.project.cacheByClassInvalidatingOnRootModifications import org.jetbrains.kotlin.cli.common.toBooleanLenient +import org.jetbrains.kotlin.config.isHmpp import org.jetbrains.kotlin.idea.facet.KotlinFacet object KotlinMultiplatformAnalysisModeComponent { @@ -38,7 +39,7 @@ object KotlinMultiplatformAnalysisModeComponent { cacheByClassInvalidatingOnRootModifications(KotlinMultiplatformAnalysisModeComponent::class.java) { ModuleManager.getInstance(this).modules.asSequence() .mapNotNull { KotlinFacet.get(it) } - .any { it.configuration.settings.isHmppEnabled } + .any { it.configuration.settings.mppVersion.isHmpp } } enum class Mode { diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt index 0982184d57e..328c4430c44 100644 --- a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt +++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/KotlinFacetSettings.kt @@ -134,6 +134,7 @@ enum class KotlinModuleKind { SOURCE_SET_HOLDER, COMPILATION_AND_SOURCE_SET_HOLDER; + @Deprecated("Use KotlinFacetSettings.mppVersion.isNewMpp") val isNewMPP: Boolean get() = this != DEFAULT } @@ -141,18 +142,18 @@ enum class KotlinModuleKind { enum class KotlinMultiplatformVersion(val version: Int) { M1(1), // the first implementation of MPP. Aka 1.2.0 MPP M2(2), // the "New" MPP. Aka 1.3.0 MPP - M3(3); // the "Hierarchical" MPP. - - val isMPPModule: Boolean - get() = version >= 1 - - val isNewMPP: Boolean - get() = version >= 2 - - val isHMPP: Boolean - get() = version >= 3 + M3(3) // the "Hierarchical" MPP. } +val KotlinMultiplatformVersion?.isOldMpp: Boolean + get() = this == KotlinMultiplatformVersion.M1 + +val KotlinMultiplatformVersion?.isNewMPP: Boolean + get() = this == KotlinMultiplatformVersion.M2 + +val KotlinMultiplatformVersion?.isHmpp: Boolean + get() = this == KotlinMultiplatformVersion.M3 + data class ExternalSystemTestTask(val testName: String, val externalSystemProjectId: String, val targetName: String?) { fun toStringRepresentation() = "$testName|$externalSystemProjectId|$targetName" diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt index 0a533b69d7a..668eb3bace5 100644 --- a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt +++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt @@ -331,7 +331,7 @@ private fun KotlinFacetSettings.writeLatestConfig(element: Element) { element.setAttribute("externalProjectId", externalProjectId) } if (isHmppEnabled) { - element.setAttribute("isHmppProject", isHmppEnabled.toString()) + element.setAttribute("isHmppProject", mppVersion.isHmpp.toString()) } if (externalSystemTestTasks.isNotEmpty()) { saveElementsList(