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.JSLibraryKind
|
||||
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.PluginTestCaseBase
|
||||
import org.jetbrains.kotlin.test.TestJdkKind
|
||||
@@ -90,9 +91,9 @@ fun AbstractMultiModuleTest.doSetup(projectModel: ProjectResolveModel) {
|
||||
|
||||
for ((resolveModule, ideaModule) in resolveModulesToIdeaModules.entries) {
|
||||
val platform = resolveModule.platform
|
||||
ideaModule.createFacet(
|
||||
ideaModule.createMultiplatformFacetM3(
|
||||
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
|
||||
ideaModule.enableMultiPlatform(additionalCompilerArguments = "-Xnew-inference")
|
||||
@@ -138,11 +139,14 @@ private fun AbstractMultiModuleTest.doSetupProject(rootInfos: List<RootInfo>) {
|
||||
modulesById.forEach { (nameAndPlatform, module) ->
|
||||
val (name, platform) = nameAndPlatform
|
||||
when {
|
||||
platform.isCommon() -> module.createFacet(platform, useProjectSettings = false)
|
||||
platform.isCommon() -> {
|
||||
module.createMultiplatformFacetM1(platform, useProjectSettings = false, implementedModuleNames = emptyList())
|
||||
}
|
||||
|
||||
else -> {
|
||||
val commonModuleId = ModuleId(name, CommonPlatforms.defaultCommonPlatform)
|
||||
|
||||
module.createFacet(platform, implementedModuleNames = listOf(commonModuleId.ideaModuleName()))
|
||||
module.createMultiplatformFacetM1(platform, implementedModuleNames = listOf(commonModuleId.ideaModuleName()))
|
||||
module.enableMultiPlatform()
|
||||
|
||||
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.psi.PsiFile
|
||||
import com.intellij.testFramework.PsiTestUtil
|
||||
import org.jetbrains.kotlin.config.CompilerSettings
|
||||
import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider
|
||||
import org.jetbrains.kotlin.config.LanguageFeature
|
||||
import org.jetbrains.kotlin.config.*
|
||||
import org.jetbrains.kotlin.idea.facet.getOrCreateFacet
|
||||
import org.jetbrains.kotlin.idea.facet.initializeIfNeeded
|
||||
import org.jetbrains.kotlin.idea.test.ConfigLibraryUtil
|
||||
@@ -140,22 +138,48 @@ abstract class AbstractMultiModuleTest : DaemonAnalyzerTestCase() {
|
||||
}
|
||||
|
||||
fun Module.createFacet(
|
||||
platformKind: TargetPlatform? = null,
|
||||
useProjectSettings: Boolean = true
|
||||
) {
|
||||
createFacetWithAdditionalSetup(platformKind, useProjectSettings) { }
|
||||
}
|
||||
|
||||
fun Module.createMultiplatformFacetM1(
|
||||
platformKind: TargetPlatform? = null,
|
||||
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> {
|
||||
val modelsProvider = IdeModifiableModelsProviderImpl(project)
|
||||
with (getOrCreateFacet(modelsProvider, useProjectSettings).configuration.settings) {
|
||||
with(getOrCreateFacet(modelsProvider, useProjectSettings).configuration.settings) {
|
||||
initializeIfNeeded(
|
||||
this@createFacet,
|
||||
modelsProvider.getModifiableRootModel(this@createFacet),
|
||||
platformKind
|
||||
this@createFacetWithAdditionalSetup,
|
||||
modelsProvider.getModifiableRootModel(this@createFacetWithAdditionalSetup),
|
||||
platformKind
|
||||
)
|
||||
if (implementedModuleNames != null) {
|
||||
this.implementedModuleNames = implementedModuleNames
|
||||
}
|
||||
additionalSetup()
|
||||
}
|
||||
modelsProvider.commit()
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user