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 58a93f8c148..b64c3b0b996 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 @@ -43,7 +43,7 @@ val Module.isTestModule: Boolean get() = facetSettings?.isTestModule ?: false val KotlinFacetSettings.isMPPModule: Boolean - get() = targetPlatform.isCommon() || implementedModuleNames.isNotEmpty() || kind.isNewMPP + get() = this.mppVersion?.isMPPModule ?: false private val Module.facetSettings get() = KotlinFacet.get(this)?.configuration?.settings 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 8816ee3069c..6defec73059 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 @@ -26,6 +26,7 @@ import org.jetbrains.kotlin.platform.IdePlatformKind import org.jetbrains.kotlin.platform.TargetPlatform import org.jetbrains.kotlin.platform.TargetPlatformVersion import org.jetbrains.kotlin.platform.compat.toIdePlatform +import org.jetbrains.kotlin.platform.isCommon import org.jetbrains.kotlin.platform.jvm.JvmPlatforms import org.jetbrains.kotlin.utils.DescriptionAware @@ -137,6 +138,21 @@ enum class KotlinModuleKind { get() = this != DEFAULT } +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 +} + class KotlinFacetSettings { companion object { // Increment this when making serialization-incompatible changes to configuration data @@ -239,8 +255,18 @@ class KotlinFacetSettings { var isTestModule: Boolean = false var externalProjectId: String = "" + + @Deprecated(message = "Use mppVersion.isHmppEnabled") var isHmppEnabled: Boolean = false + val mppVersion: KotlinMultiplatformVersion? + get() = when { + isHmppEnabled -> KotlinMultiplatformVersion.M3 + kind.isNewMPP -> KotlinMultiplatformVersion.M2 + targetPlatform.isCommon() || implementedModuleNames.isNotEmpty() || kind.isNewMPP -> KotlinMultiplatformVersion.M1 + else -> null + } + var pureKotlinSourceFolders: List = emptyList() }