Don't report "can be configured" status if the file is already configured with another Gradle configurator
This commit is contained in:
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.configuration
|
|||||||
|
|
||||||
import com.intellij.codeInsight.CodeInsightUtilCore
|
import com.intellij.codeInsight.CodeInsightUtilCore
|
||||||
import com.intellij.ide.actions.OpenFileAction
|
import com.intellij.ide.actions.OpenFileAction
|
||||||
|
import com.intellij.openapi.extensions.Extensions
|
||||||
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
import com.intellij.openapi.externalSystem.util.ExternalSystemApiUtil
|
||||||
import com.intellij.openapi.module.Module
|
import com.intellij.openapi.module.Module
|
||||||
import com.intellij.openapi.module.ModuleUtil
|
import com.intellij.openapi.module.ModuleUtil
|
||||||
@@ -65,13 +66,15 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator {
|
|||||||
val buildFiles = listOf(getBuildGradleFile(module.project, getModuleFilePath(module)),
|
val buildFiles = listOf(getBuildGradleFile(module.project, getModuleFilePath(module)),
|
||||||
getBuildGradleFile(module.project, getTopLevelProjectFilePath(module.project)))
|
getBuildGradleFile(module.project, getTopLevelProjectFilePath(module.project)))
|
||||||
.filterNotNull()
|
.filterNotNull()
|
||||||
if (buildFiles.none(this::isFileConfigured)) {
|
if (buildFiles.none { buildFile -> allGradleConfigurators.any { it.isFileConfigured(buildFile) } })
|
||||||
return ConfigureKotlinStatus.CAN_BE_CONFIGURED
|
return ConfigureKotlinStatus.CAN_BE_CONFIGURED
|
||||||
}
|
|
||||||
|
|
||||||
return ConfigureKotlinStatus.BROKEN
|
return ConfigureKotlinStatus.BROKEN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private val allGradleConfigurators: Collection<KotlinWithGradleConfigurator>
|
||||||
|
get() = Extensions.getExtensions(KotlinProjectConfigurator.EP_NAME).filterIsInstance<KotlinWithGradleConfigurator>()
|
||||||
|
|
||||||
protected open fun isApplicable(module: Module): Boolean {
|
protected open fun isApplicable(module: Module): Boolean {
|
||||||
return KotlinPluginUtil.isGradleModule(module) && !KotlinPluginUtil.isAndroidGradleModule(module)
|
return KotlinPluginUtil.isGradleModule(module) && !KotlinPluginUtil.isAndroidGradleModule(module)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -57,10 +57,11 @@ class GradleConfiguratorTest : GradleImportingTestCase() {
|
|||||||
myProject.baseDir.createChildData(null, "build.gradle")
|
myProject.baseDir.createChildData(null, "build.gradle")
|
||||||
|
|
||||||
val module = ModuleManager.getInstance(myProject).findModuleByName("app")!!
|
val module = ModuleManager.getInstance(myProject).findModuleByName("app")!!
|
||||||
val configurator = findGradleModuleConfigurator()
|
|
||||||
// We have a Kotlin runtime in build.gradle but not in the classpath, so it doesn't make sense
|
// We have a Kotlin runtime in build.gradle but not in the classpath, so it doesn't make sense
|
||||||
// to suggest configuring it
|
// to suggest configuring it
|
||||||
assertEquals(ConfigureKotlinStatus.BROKEN, configurator.getStatus(module))
|
assertEquals(ConfigureKotlinStatus.BROKEN, findGradleModuleConfigurator().getStatus(module))
|
||||||
|
// Don't offer the JS configurator if the JVM configuration exists but is broken
|
||||||
|
assertEquals(ConfigureKotlinStatus.BROKEN, findJsGradleModuleConfigurator().getStatus(module))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -114,6 +115,8 @@ class GradleConfiguratorTest : GradleImportingTestCase() {
|
|||||||
private fun findGradleModuleConfigurator() = Extensions.findExtension(KotlinProjectConfigurator.EP_NAME,
|
private fun findGradleModuleConfigurator() = Extensions.findExtension(KotlinProjectConfigurator.EP_NAME,
|
||||||
KotlinGradleModuleConfigurator::class.java)
|
KotlinGradleModuleConfigurator::class.java)
|
||||||
|
|
||||||
|
private fun findJsGradleModuleConfigurator() = Extensions.findExtension(KotlinProjectConfigurator.EP_NAME,
|
||||||
|
KotlinJsGradleModuleConfigurator::class.java)
|
||||||
@Test
|
@Test
|
||||||
fun testListNonConfiguredModules() {
|
fun testListNonConfiguredModules() {
|
||||||
createProjectSubFile("settings.gradle", "include ':app'")
|
createProjectSubFile("settings.gradle", "include ':app'")
|
||||||
|
|||||||
Reference in New Issue
Block a user