From 00d8045adc3921af6030acf075dae143d1c8b7a1 Mon Sep 17 00:00:00 2001 From: Ilya Kirillov Date: Sat, 7 Mar 2020 19:13:58 +0300 Subject: [PATCH] Wizard: correctly check for Kotlin compiler version is snapshot --- .../service/IdeaKotlinVersionProviderService.kt | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt index 0d85bccd198..a09d111f90e 100644 --- a/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt +++ b/idea/idea-new-project-wizard/src/org/jetbrains/kotlin/tools/projectWizard/wizard/service/IdeaKotlinVersionProviderService.kt @@ -5,6 +5,7 @@ package org.jetbrains.kotlin.tools.projectWizard.wizard.service +import com.intellij.util.text.VersionComparatorUtil import org.jetbrains.kotlin.config.KotlinCompilerVersion import org.jetbrains.kotlin.idea.framework.ui.ConfigureDialogWithModulesAndVersion import org.jetbrains.kotlin.tools.projectWizard.core.TaskResult @@ -22,11 +23,21 @@ import java.util.stream.Collectors class IdeaKotlinVersionProviderService : KotlinVersionProviderService, IdeaWizardService { override fun getKotlinVersion(): Version = - KotlinCompilerVersion.getVersion()?.let { Version.fromString(it) } + getKotlinVersionFromCompiler() ?: VersionsDownloader.downloadLatestEapOrStableKotlinVersion() ?: KotlinVersionProviderServiceImpl.DEFAULT + + private fun getKotlinVersionFromCompiler() = + KotlinCompilerVersion.getVersion() + ?.takeUnless { it.contains(SNAPSHOT_TAG, ignoreCase = true) } + ?.let { Version.fromString(it) } + + companion object { + private const val SNAPSHOT_TAG = "snapshot" + } } + private object VersionsDownloader { fun downloadLatestEapOrStableKotlinVersion(): Version? = runWithProgressBar("Downloading Kotlin version") { val latestEap = EapVersionDownloader.getLatestEapVersion() @@ -34,7 +45,7 @@ private object VersionsDownloader { when { latestEap == null -> latestStable latestStable == null -> latestEap - latestEap > latestStable -> latestEap + VersionComparatorUtil.compare(latestEap.text, latestStable.text) > 0 -> latestEap else -> latestStable } }