Refactor MPP versioning

- Use 'null' as indicator of non-MPP version. Consequently, remove
useless 'isMpp' method, and lift all methods to extensions (to be able
to call them on nullable 'facetSettings.mppVersion')

- Change semantics of extensions to check for exact equality rather than
for "at least specified version"

- Deprecate old MPP-versioning in favour of 'facetSettings.mppVersion'
This commit is contained in:
Dmitry Savvinov
2019-09-05 16:00:55 +03:00
parent dbd352e2ba
commit 958a7d9315
4 changed files with 20 additions and 14 deletions
@@ -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
@@ -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 {