From 8f8db75bb49cb79a2c6f44701020ab77f75521c5 Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 10 Mar 2017 20:37:39 +0100 Subject: [PATCH] getNonConfiguredModules(project, configurator) excludes modules already configured with other configurators #KT-16381 Fixed --- .../idea/configuration/ConfigureKotlinInProjectUtils.kt | 6 +++++- .../kotlin/idea/configuration/ConfigureKotlinTest.java | 2 ++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt index f1820da9c78..c31a26ca919 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt @@ -130,10 +130,14 @@ fun allConfigurators() = Extensions.getExtensions(KotlinProjectConfigurator.EP_N fun getNonConfiguredModules(project: Project, configurator: KotlinProjectConfigurator): List { return project.allModules() - .filter { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } + .filter { module -> configurator.canConfigure(module) } .excludeSourceRootModules() } +private fun KotlinProjectConfigurator.canConfigure(module: Module) = + getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED && + (allConfigurators().toList() - this).none { it.getStatus(module) == ConfigureKotlinStatus.CONFIGURED } + fun Collection.excludeSourceRootModules(): List { val pathMap = buildExternalPathMap() return filter { it.externalProjectId == null || it.externalProjectPath == null } + pathMap.values diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java index 01a24315712..3c3608ccf9b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java @@ -98,10 +98,12 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest { public void testTwoModulesWithNonDefaultPath_doNotCopyInDefault() throws IOException { doTestConfigureModulesWithNonDefaultSetup(JAVA_CONFIGURATOR); + assertEmpty(ConfigureKotlinInProjectUtilsKt.getNonConfiguredModules(myProject, JS_CONFIGURATOR)); } public void testTwoModulesWithJSNonDefaultPath_doNotCopyInDefault() throws IOException { doTestConfigureModulesWithNonDefaultSetup(JS_CONFIGURATOR); + assertEmpty(ConfigureKotlinInProjectUtilsKt.getNonConfiguredModules(myProject, JAVA_CONFIGURATOR)); } public void testNewLibrary_jarExists_js() {