From 5f124e97815d2044be2bbc1c5596ab2cd8166b5a Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 19 Dec 2016 18:07:52 +0100 Subject: [PATCH] Don't show "Kotlin not configured" notification for projects that have Kotlin common runtime in scope #KT-15331 Fixed --- .../configuration/ConfigureKotlinInProjectUtils.kt | 12 ++++++++++-- .../KotlinSetupEnvironmentNotificationProvider.kt | 2 +- .../configuration/KotlinWithGradleConfigurator.kt | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt index f0eb0af5d33..14922c562a0 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInProjectUtils.kt @@ -24,11 +24,13 @@ import com.intellij.openapi.project.Project import com.intellij.openapi.util.Computable import com.intellij.psi.search.FileTypeIndex import com.intellij.psi.search.GlobalSearchScope +import org.jetbrains.kotlin.builtins.KotlinBuiltIns import org.jetbrains.kotlin.idea.KotlinFileType import org.jetbrains.kotlin.idea.configuration.ui.notifications.ConfigureKotlinNotification import org.jetbrains.kotlin.idea.util.projectStructure.allModules import org.jetbrains.kotlin.idea.versions.getKotlinJsRuntimeMarkerClass import org.jetbrains.kotlin.idea.versions.getKotlinJvmRuntimeMarkerClass +import org.jetbrains.kotlin.idea.vfilefinder.JvmIDEVirtualFileFinder import org.jetbrains.kotlin.utils.ifEmpty data class RepositoryDescription(val id: String, val name: String, val url: String, val isSnapshot: Boolean) @@ -127,9 +129,11 @@ fun getNonConfiguredModules(project: Project, excludeModules: Collection } } -fun hasKotlinJvmOrJsRuntimeInScope(module: Module): Boolean { +fun hasAnyKotlinRuntimeInScope(module: Module): Boolean { val scope = module.getModuleWithDependenciesAndLibrariesScope(hasKotlinFilesOnlyInTests(module)) - return getKotlinJvmRuntimeMarkerClass(module.project, scope) != null || getKotlinJsRuntimeMarkerClass(module.project, scope) != null + return getKotlinJvmRuntimeMarkerClass(module.project, scope) != null || + getKotlinJsRuntimeMarkerClass(module.project, scope) != null || + hasKotlinCommonRuntimeInScope(scope) } fun hasKotlinJvmRuntimeInScope(module: Module): Boolean { @@ -142,6 +146,10 @@ fun hasKotlinJsRuntimeInScope(module: Module): Boolean { return getKotlinJsRuntimeMarkerClass(module.project, scope) != null } +fun hasKotlinCommonRuntimeInScope(scope: GlobalSearchScope): Boolean { + return JvmIDEVirtualFileFinder(scope).hasMetadataPackage(KotlinBuiltIns.BUILT_INS_PACKAGE_FQ_NAME) +} + fun hasKotlinFilesOnlyInTests(module: Module): Boolean { return !hasKotlinFilesInSources(module) && FileTypeIndex.containsFileOfType(KotlinFileType.INSTANCE, module.getModuleScope(true)) } diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt index a8fd2eefaa5..743c4dc12c1 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinSetupEnvironmentNotificationProvider.kt @@ -77,7 +77,7 @@ class KotlinSetupEnvironmentNotificationProvider( return createSetupSdkPanel(myProject, psiFile) } - if (!hasKotlinJvmOrJsRuntimeInScope(module) && + if (!hasAnyKotlinRuntimeInScope(module) && UnsupportedAbiVersionNotificationPanelProvider.collectBadRoots(module).isEmpty()) { return createKotlinNotConfiguredPanel(module) } diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt index 16ea9f66e8b..75ff7bc6917 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinWithGradleConfigurator.kt @@ -51,7 +51,7 @@ abstract class KotlinWithGradleConfigurator : KotlinProjectConfigurator { return ConfigureKotlinStatus.NON_APPLICABLE } - if (hasKotlinJvmRuntimeInScope(module)) { + if (hasAnyKotlinRuntimeInScope(module)) { return ConfigureKotlinStatus.CONFIGURED }