Configure facets depending on MPP version in tests setup
This commit is contained in:
@@ -18,7 +18,8 @@ import org.jetbrains.kotlin.codegen.forTestCompile.ForTestCompileRuntime
|
|||||||
import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
|
import org.jetbrains.kotlin.idea.framework.CommonLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
import org.jetbrains.kotlin.idea.framework.JSLibraryKind
|
||||||
import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest
|
import org.jetbrains.kotlin.idea.stubs.AbstractMultiModuleTest
|
||||||
import org.jetbrains.kotlin.idea.stubs.createFacet
|
import org.jetbrains.kotlin.idea.stubs.createMultiplatformFacetM1
|
||||||
|
import org.jetbrains.kotlin.idea.stubs.createMultiplatformFacetM3
|
||||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||||
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
import org.jetbrains.kotlin.idea.test.PluginTestCaseBase
|
||||||
import org.jetbrains.kotlin.test.TestJdkKind
|
import org.jetbrains.kotlin.test.TestJdkKind
|
||||||
@@ -90,9 +91,9 @@ fun AbstractMultiModuleTest.doSetup(projectModel: ProjectResolveModel) {
|
|||||||
|
|
||||||
for ((resolveModule, ideaModule) in resolveModulesToIdeaModules.entries) {
|
for ((resolveModule, ideaModule) in resolveModulesToIdeaModules.entries) {
|
||||||
val platform = resolveModule.platform
|
val platform = resolveModule.platform
|
||||||
ideaModule.createFacet(
|
ideaModule.createMultiplatformFacetM3(
|
||||||
platform,
|
platform,
|
||||||
implementedModuleNames = resolveModule.dependencies.filter { it.kind == ResolveDependency.Kind.DEPENDS_ON }.map { it.to.name }
|
dependsOnModuleNames = resolveModule.dependencies.filter { it.kind == ResolveDependency.Kind.DEPENDS_ON }.map { it.to.name }
|
||||||
)
|
)
|
||||||
// New inference is enabled here as these tests are using type refinement feature that is working only along with NI
|
// New inference is enabled here as these tests are using type refinement feature that is working only along with NI
|
||||||
ideaModule.enableMultiPlatform(additionalCompilerArguments = "-Xnew-inference")
|
ideaModule.enableMultiPlatform(additionalCompilerArguments = "-Xnew-inference")
|
||||||
@@ -138,11 +139,14 @@ private fun AbstractMultiModuleTest.doSetupProject(rootInfos: List<RootInfo>) {
|
|||||||
modulesById.forEach { (nameAndPlatform, module) ->
|
modulesById.forEach { (nameAndPlatform, module) ->
|
||||||
val (name, platform) = nameAndPlatform
|
val (name, platform) = nameAndPlatform
|
||||||
when {
|
when {
|
||||||
platform.isCommon() -> module.createFacet(platform, useProjectSettings = false)
|
platform.isCommon() -> {
|
||||||
|
module.createMultiplatformFacetM1(platform, useProjectSettings = false, implementedModuleNames = emptyList())
|
||||||
|
}
|
||||||
|
|
||||||
else -> {
|
else -> {
|
||||||
val commonModuleId = ModuleId(name, CommonPlatforms.defaultCommonPlatform)
|
val commonModuleId = ModuleId(name, CommonPlatforms.defaultCommonPlatform)
|
||||||
|
|
||||||
module.createFacet(platform, implementedModuleNames = listOf(commonModuleId.ideaModuleName()))
|
module.createMultiplatformFacetM1(platform, implementedModuleNames = listOf(commonModuleId.ideaModuleName()))
|
||||||
module.enableMultiPlatform()
|
module.enableMultiPlatform()
|
||||||
|
|
||||||
modulesById[commonModuleId]?.let { commonModule ->
|
modulesById[commonModuleId]?.let { commonModule ->
|
||||||
|
|||||||
@@ -23,9 +23,7 @@ import com.intellij.openapi.vfs.VfsUtil
|
|||||||
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess
|
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess
|
||||||
import com.intellij.psi.PsiFile
|
import com.intellij.psi.PsiFile
|
||||||
import com.intellij.testFramework.PsiTestUtil
|
import com.intellij.testFramework.PsiTestUtil
|
||||||
import org.jetbrains.kotlin.config.CompilerSettings
|
import org.jetbrains.kotlin.config.*
|
||||||
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
|
||||||
import org.jetbrains.kotlin.config.LanguageFeature
|
|
||||||
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
|
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
|
||||||
import org.jetbrains.kotlin.idea.facet.initializeIfNeeded
|
import org.jetbrains.kotlin.idea.facet.initializeIfNeeded
|
||||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||||
@@ -140,21 +138,47 @@ abstract class AbstractMultiModuleTest : DaemonAnalyzerTestCase() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fun Module.createFacet(
|
fun Module.createFacet(
|
||||||
|
platformKind: TargetPlatform? = null,
|
||||||
|
useProjectSettings: Boolean = true
|
||||||
|
) {
|
||||||
|
createFacetWithAdditionalSetup(platformKind, useProjectSettings) { }
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Module.createMultiplatformFacetM1(
|
||||||
platformKind: TargetPlatform? = null,
|
platformKind: TargetPlatform? = null,
|
||||||
useProjectSettings: Boolean = true,
|
useProjectSettings: Boolean = true,
|
||||||
implementedModuleNames: List<String>? = null
|
implementedModuleNames: List<String>
|
||||||
|
) {
|
||||||
|
createFacetWithAdditionalSetup(platformKind, useProjectSettings) {
|
||||||
|
this.implementedModuleNames = implementedModuleNames
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fun Module.createMultiplatformFacetM3(
|
||||||
|
platformKind: TargetPlatform? = null,
|
||||||
|
useProjectSettings: Boolean = true,
|
||||||
|
dependsOnModuleNames: List<String>
|
||||||
|
) {
|
||||||
|
createFacetWithAdditionalSetup(platformKind, useProjectSettings) {
|
||||||
|
this.dependsOnModuleNames = dependsOnModuleNames
|
||||||
|
this.isHmppEnabled = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private fun Module.createFacetWithAdditionalSetup(
|
||||||
|
platformKind: TargetPlatform?,
|
||||||
|
useProjectSettings: Boolean,
|
||||||
|
additionalSetup: KotlinFacetSettings.() -> Unit
|
||||||
) {
|
) {
|
||||||
WriteAction.run<Throwable> {
|
WriteAction.run<Throwable> {
|
||||||
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
||||||
with (getOrCreateFacet(modelsProvider, useProjectSettings).configuration.settings) {
|
with(getOrCreateFacet(modelsProvider, useProjectSettings).configuration.settings) {
|
||||||
initializeIfNeeded(
|
initializeIfNeeded(
|
||||||
this@createFacet,
|
this@createFacetWithAdditionalSetup,
|
||||||
modelsProvider.getModifiableRootModel(this@createFacet),
|
modelsProvider.getModifiableRootModel(this@createFacetWithAdditionalSetup),
|
||||||
platformKind
|
platformKind
|
||||||
)
|
)
|
||||||
if (implementedModuleNames != null) {
|
additionalSetup()
|
||||||
this.implementedModuleNames = implementedModuleNames
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
modelsProvider.commit()
|
modelsProvider.commit()
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user