From 9f8af1feea6d6a61010fdc6134a86df523e6c03f Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Fri, 10 Mar 2017 19:18:40 +0100 Subject: [PATCH] Refactor getNonConfiguredModules(Project) Rename to getNonConfiguredModulesWithKotlinFiles() to match what it actually does, remove duplicate configurator status check, extract code for collecting all configurators --- .../ConfigureKotlinInProjectUtils.kt | 16 +++++++++------- .../notifications/ConfigureKotlinNotification.kt | 4 ++-- .../codeInsight/gradle/GradleConfiguratorTest.kt | 8 ++++++-- 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt index 318ec0ce90f..f1820da9c78 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt @@ -59,7 +59,7 @@ val EAP_11_REPOSITORY = RepositoryDescription( isSnapshot = false) fun isModuleConfigured(module: Module): Boolean { - return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).any { + return allConfigurators().any { it.getStatus(module) == ConfigureKotlinStatus.CONFIGURED } } @@ -113,19 +113,21 @@ fun showConfigureKotlinNotificationIfNeeded(project: Project, excludeModules: Li fun getAbleToRunConfigurators(project: Project): Collection { val modules = getConfigurableModulesWithKotlinFiles(project).ifEmpty { project.allModules() } - return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).filter { configurator -> + return allConfigurators().filter { configurator -> modules.any { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } } } fun getAbleToRunConfigurators(module: Module): Collection { - return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).filter { it.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } + return allConfigurators().filter { it.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } } fun getConfiguratorByName(name: String): KotlinProjectConfigurator? { - return Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).firstOrNull { it.name == name } + return allConfigurators().firstOrNull { it.name == name } } +fun allConfigurators() = Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME) + fun getNonConfiguredModules(project: Project, configurator: KotlinProjectConfigurator): List { return project.allModules() .filter { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } @@ -167,11 +169,11 @@ fun getNonConfiguredModulesWithKotlinFiles(project: Project, configurator: Kotli return modules.filter { module -> configurator.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } } -fun getNonConfiguredModules(project: Project, excludeModules: Collection = emptyList()): Collection { +fun getNonConfiguredModulesWithKotlinFiles(project: Project, excludeModules: Collection = emptyList()): Collection { val modulesWithKotlinFiles = getConfigurableModulesWithKotlinFiles(project) - excludeModules - val ableToRunConfigurators = getAbleToRunConfigurators(project) + val configurators = allConfigurators() return modulesWithKotlinFiles.filter { module -> - ableToRunConfigurators.any { it.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } + configurators.any { it.getStatus(module) == ConfigureKotlinStatus.CAN_BE_CONFIGURED } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/ConfigureKotlinNotification.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/ConfigureKotlinNotification.kt index 21c29895e67..9f41829227a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/ConfigureKotlinNotification.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/ui/notifications/ConfigureKotlinNotification.kt @@ -24,7 +24,7 @@ import com.intellij.openapi.project.Project import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator import org.jetbrains.kotlin.idea.configuration.getAbleToRunConfigurators import org.jetbrains.kotlin.idea.configuration.getConfiguratorByName -import org.jetbrains.kotlin.idea.configuration.getNonConfiguredModules +import org.jetbrains.kotlin.idea.configuration.getNonConfiguredModulesWithKotlinFiles import org.jetbrains.kotlin.idea.configuration.ui.KotlinConfigurationCheckerComponent import javax.swing.event.HyperlinkEvent @@ -60,7 +60,7 @@ class ConfigureKotlinNotification( companion object { fun getNotificationString(project: Project, excludeModules: Collection): String { - val modules = getNonConfiguredModules(project, excludeModules) + val modules = getNonConfiguredModulesWithKotlinFiles(project, excludeModules) val isOnlyOneModule = modules.size == 1 diff --git a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorTest.kt b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorTest.kt index 56259d91650..1064bde4018 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/codeInsight/gradle/GradleConfiguratorTest.kt @@ -136,8 +136,12 @@ class GradleConfiguratorTest : GradleImportingTestCase() { runReadAction { val configurator = findGradleModuleConfigurator() - val moduleNames = getNonConfiguredModules(myProject, configurator).map { it.name } - assertSameElements(moduleNames, "app", "project") + + val moduleNames = getNonConfiguredModulesWithKotlinFiles(myProject).map { it.name } + assertSameElements(moduleNames, "app") + + val moduleNamesFromConfigurator = getNonConfiguredModules(myProject, configurator).map { it.name } + assertSameElements(moduleNamesFromConfigurator, "app", "project") val moduleNamesWithKotlinFiles = getNonConfiguredModulesWithKotlinFiles(myProject, configurator).map { it.name } assertSameElements(moduleNamesWithKotlinFiles, "app")