From 7beee33f0551bc4ff96f28eaa9696e030cdaa98c Mon Sep 17 00:00:00 2001 From: Dmitry Jemerov Date: Mon, 14 Nov 2016 18:23:17 +0100 Subject: [PATCH] Read bundled runtime version from build.txt in 'kotlinc' directory, not from plugin version --- .../src/org/jetbrains/kotlin/utils/KotlinPaths.java | 3 +++ .../kotlin/utils/KotlinPathsFromHomeDir.java | 6 ++++++ .../ui/ConfigureDialogWithModulesAndVersion.java | 3 +-- .../kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt | 12 +++++++++++- .../idea/OutdatedKotlinRuntimeNotificationTest.kt | 8 ++++---- 5 files changed, 25 insertions(+), 7 deletions(-) diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.java b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.java index f8afd48bd97..462a2f130dd 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.java +++ b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPaths.java @@ -50,4 +50,7 @@ public interface KotlinPaths { @NotNull File getCompilerPath(); + + @NotNull + File getBuildNumberFile(); } diff --git a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPathsFromHomeDir.java b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPathsFromHomeDir.java index b86448ecf13..cb6adbc0e75 100644 --- a/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPathsFromHomeDir.java +++ b/compiler/util/src/org/jetbrains/kotlin/utils/KotlinPathsFromHomeDir.java @@ -88,6 +88,12 @@ public class KotlinPathsFromHomeDir implements KotlinPaths { return getLibraryFile(PathUtil.KOTLIN_COMPILER_JAR); } + @NotNull + @Override + public File getBuildNumberFile() { + return new File(homePath, "build.txt"); + } + @NotNull private File getLibraryFile(@NotNull String fileName) { return new File(getLibPath(), fileName); diff --git a/idea/src/org/jetbrains/kotlin/idea/framework/ui/ConfigureDialogWithModulesAndVersion.java b/idea/src/org/jetbrains/kotlin/idea/framework/ui/ConfigureDialogWithModulesAndVersion.java index e9a5ab36291..1a3c7cac545 100644 --- a/idea/src/org/jetbrains/kotlin/idea/framework/ui/ConfigureDialogWithModulesAndVersion.java +++ b/idea/src/org/jetbrains/kotlin/idea/framework/ui/ConfigureDialogWithModulesAndVersion.java @@ -35,7 +35,6 @@ import com.intellij.util.ui.AsyncProcessIcon; import com.intellij.util.ui.UIUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.kotlin.idea.KotlinPluginUtil; import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinInProjectUtilsKt; import org.jetbrains.kotlin.idea.configuration.KotlinProjectConfigurator; import org.jetbrains.kotlin.idea.versions.KotlinRuntimeLibraryUtilKt; @@ -172,7 +171,7 @@ public class ConfigureDialogWithModulesAndVersion extends DialogWrapper { protected static Collection loadVersions() throws Exception { List versions = Lists.newArrayList(); - String bundledRuntimeVersion = KotlinRuntimeLibraryUtilKt.bundledRuntimeVersion(KotlinPluginUtil.getPluginVersion()); + String bundledRuntimeVersion = KotlinRuntimeLibraryUtilKt.bundledRuntimeVersion(); if (ConfigureKotlinInProjectUtilsKt.isEap(bundledRuntimeVersion)) { HttpURLConnection eapConnection = HttpConfigurable.getInstance().openHttpConnection(EAP_VERSIONS_URL + bundledRuntimeVersion); try { diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt index 272dafa0097..1aac16e927c 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/KotlinRuntimeLibraryUtil.kt @@ -168,8 +168,18 @@ private enum class LibraryJarDescriptor private constructor(val jarName: String, JS_STDLIB_SRC_JAR(PathUtil.JS_LIB_SRC_JAR_NAME, false) } +fun bundledRuntimeVersion(): String { + return bundledRuntimeBuildNumber ?: pluginRuntimeVersion(KotlinPluginUtil.getPluginVersion()) +} + +private val bundledRuntimeBuildNumber: String? by lazy { + val file = PathUtil.getKotlinPathsForIdeaPlugin().buildNumberFile + if (file.exists()) file.readText().trim() else null +} + private val PLUGIN_VERSIONS_SEPARATORS = arrayOf("Idea", "IJ", "release", "dev", "Studio") -@JvmOverloads fun bundledRuntimeVersion(pluginVersion: String = KotlinPluginUtil.getPluginVersion()): String { + +fun pluginRuntimeVersion(pluginVersion: String): String { var placeToSplit = -1 for (separator in PLUGIN_VERSIONS_SEPARATORS) { diff --git a/idea/tests/org/jetbrains/kotlin/idea/OutdatedKotlinRuntimeNotificationTest.kt b/idea/tests/org/jetbrains/kotlin/idea/OutdatedKotlinRuntimeNotificationTest.kt index adaedd77c38..79bed1da3ee 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/OutdatedKotlinRuntimeNotificationTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/OutdatedKotlinRuntimeNotificationTest.kt @@ -17,8 +17,8 @@ package org.jetbrains.kotlin.idea import junit.framework.TestCase -import org.jetbrains.kotlin.idea.versions.bundledRuntimeVersion import org.jetbrains.kotlin.idea.versions.isRuntimeOutdated +import org.jetbrains.kotlin.idea.versions.pluginRuntimeVersion import org.junit.Assert @@ -96,15 +96,15 @@ class KotlinRuntimeLibraryUtilTest : TestCase() { private fun outdated(plugin: String, library: String) { Assert.assertTrue("Should be outdated: plugin=$plugin, library=$library", - isRuntimeOutdated(library, bundledRuntimeVersion(plugin))) + isRuntimeOutdated(library, pluginRuntimeVersion(plugin))) } private fun notOutdated(plugin: String, library: String) { Assert.assertFalse("Should NOT be outdated: plugin=$plugin, library=$library", - isRuntimeOutdated(library, bundledRuntimeVersion(plugin))) + isRuntimeOutdated(library, pluginRuntimeVersion(plugin))) } private fun test(version: String, expected: String) { - Assert.assertEquals(expected, bundledRuntimeVersion(version)) + Assert.assertEquals(expected, pluginRuntimeVersion(version)) } } \ No newline at end of file