From 9902643a26e1d3e07ef4837d093f92d9f2c999be Mon Sep 17 00:00:00 2001 From: Pavel Kirpichenkov Date: Wed, 29 Jan 2020 15:07:35 +0300 Subject: [PATCH] Remove unsupported versions from kotlin compiler tab in settings KT-36146 In progress --- .../arguments/CommonCompilerArguments.kt | 2 +- .../testData/cli/jvm/apiVersionInvalid.out | 2 +- .../cli/jvm/languageVersionInvalid.out | 2 +- .../kotlin/config/LanguageVersionSettings.kt | 9 +++++++-- .../idea/maven/KotlinMavenImporterTest.kt | 12 +++++------ .../KotlinCompilerConfigurableTab.java | 7 ++----- .../ConfigureKotlinInTempDirTest.kt | 12 +++++------ .../configuration/ConfigureKotlinTest.java | 20 +++++++++---------- 8 files changed, 34 insertions(+), 32 deletions(-) diff --git a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt index 48aa8441ea1..8fd0e2581e0 100644 --- a/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt +++ b/compiler/cli/cli-common/src/org/jetbrains/kotlin/cli/common/arguments/CommonCompilerArguments.kt @@ -585,7 +585,7 @@ abstract class CommonCompilerArguments : CommonToolArguments() { if (value == null) null else LanguageVersion.fromVersionString(value) ?: run { - val versionStrings = LanguageVersion.values().map(LanguageVersion::description) + val versionStrings = LanguageVersion.values().filterNot(LanguageVersion::isUnsupported).map(LanguageVersion::description) val message = "Unknown $versionOf version: $value\nSupported $versionOf versions: ${versionStrings.joinToString(", ")}" collector.report(CompilerMessageSeverity.ERROR, message, null) null diff --git a/compiler/testData/cli/jvm/apiVersionInvalid.out b/compiler/testData/cli/jvm/apiVersionInvalid.out index 6f82a36cb5f..5fea5778881 100644 --- a/compiler/testData/cli/jvm/apiVersionInvalid.out +++ b/compiler/testData/cli/jvm/apiVersionInvalid.out @@ -1,3 +1,3 @@ error: unknown API version: 239.42 -Supported API versions: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5 (EXPERIMENTAL) +Supported API versions: 1.2 (DEPRECATED), 1.3, 1.4, 1.5 (EXPERIMENTAL) COMPILATION_ERROR diff --git a/compiler/testData/cli/jvm/languageVersionInvalid.out b/compiler/testData/cli/jvm/languageVersionInvalid.out index dbaf9764522..150c7939bd9 100644 --- a/compiler/testData/cli/jvm/languageVersionInvalid.out +++ b/compiler/testData/cli/jvm/languageVersionInvalid.out @@ -1,3 +1,3 @@ error: unknown language version: 239.42 -Supported language versions: 1.0, 1.1, 1.2, 1.3, 1.4, 1.5 (EXPERIMENTAL) +Supported language versions: 1.2 (DEPRECATED), 1.3, 1.4, 1.5 (EXPERIMENTAL) COMPILATION_ERROR diff --git a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt index 44ac264b26d..95320a1dc4b 100644 --- a/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt +++ b/compiler/util/src/org/jetbrains/kotlin/config/LanguageVersionSettings.kt @@ -249,7 +249,7 @@ enum class LanguageVersion(val major: Int, val minor: Int) : DescriptionAware { get() = this <= LATEST_STABLE val isDeprecated: Boolean - get() = this >= OLDEST_DEPRECATED && this < FIRST_SUPPORTED + get() = OLDEST_DEPRECATED <= this && this < FIRST_SUPPORTED val isUnsupported: Boolean get() = this < OLDEST_DEPRECATED @@ -258,7 +258,12 @@ enum class LanguageVersion(val major: Int, val minor: Int) : DescriptionAware { get() = "$major.$minor" override val description: String - get() = if (isStable) versionString else "$versionString (EXPERIMENTAL)" + get() = when { + !isStable -> "$versionString (EXPERIMENTAL)" + isDeprecated -> "$versionString (DEPRECATED)" + isUnsupported -> "$versionString (UNSUPPORTED)" + else -> versionString + } override fun toString() = versionString diff --git a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt index 375f0749c00..ff96581889b 100644 --- a/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt +++ b/idea/idea-maven/test/org/jetbrains/kotlin/idea/maven/KotlinMavenImporterTest.kt @@ -2024,8 +2024,8 @@ class KotlinMavenImporterTest : MavenImportingTestCase() { with(facetSettings) { Assert.assertEquals("JVM 1.8", targetPlatform!!.oldFashionedDescription) - Assert.assertEquals("1.1", languageLevel!!.description) - Assert.assertEquals("1.1", apiLevel!!.description) + Assert.assertEquals(LanguageVersion.KOTLIN_1_1.description, languageLevel!!.description) + Assert.assertEquals(LanguageVersion.KOTLIN_1_1.description, apiLevel!!.description) Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget) } } @@ -2247,8 +2247,8 @@ class KotlinMavenImporterTest : MavenImportingTestCase() { with(facetSettings("myModule1")) { Assert.assertEquals("JVM 1.8", targetPlatform!!.oldFashionedDescription) - Assert.assertEquals("1.1", languageLevel!!.description) - Assert.assertEquals("1.0", apiLevel!!.description) + Assert.assertEquals(LanguageVersion.KOTLIN_1_1, languageLevel!!) + Assert.assertEquals(LanguageVersion.KOTLIN_1_0, apiLevel!!) Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget) Assert.assertEquals( listOf("-Xdump-declarations-to=dumpDir2"), @@ -2258,8 +2258,8 @@ class KotlinMavenImporterTest : MavenImportingTestCase() { with(facetSettings("myModule2")) { Assert.assertEquals("JVM 1.8", targetPlatform!!.oldFashionedDescription) - Assert.assertEquals("1.1", languageLevel!!.description) - Assert.assertEquals("1.0", apiLevel!!.description) + Assert.assertEquals(LanguageVersion.KOTLIN_1_1, languageLevel!!) + Assert.assertEquals(LanguageVersion.KOTLIN_1_0, apiLevel!!) Assert.assertEquals("1.8", (compilerArguments as K2JVMCompilerArguments).jvmTarget) Assert.assertEquals( listOf("-Xdump-declarations-to=dumpDir", "-java-parameters", "-kotlin-home", "temp2"), diff --git a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java index b2661a03031..cf9ade58e29 100644 --- a/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java +++ b/idea/src/org/jetbrains/kotlin/idea/compiler/configuration/KotlinCompilerConfigurableTab.java @@ -7,7 +7,6 @@ package org.jetbrains.kotlin.idea.compiler.configuration; import com.intellij.icons.AllIcons; import com.intellij.openapi.application.ApplicationManager; -import com.intellij.openapi.components.ServiceManager; import com.intellij.openapi.fileChooser.FileChooserDescriptor; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.options.Configurable; @@ -36,7 +35,6 @@ import org.jetbrains.kotlin.cli.common.arguments.K2JsArgumentConstants; import org.jetbrains.kotlin.config.*; import org.jetbrains.kotlin.idea.KotlinBundle; import org.jetbrains.kotlin.idea.PluginStartupComponent; -import org.jetbrains.kotlin.idea.configuration.ProjectUtilsKt; import org.jetbrains.kotlin.idea.facet.DescriptionListCellRenderer; import org.jetbrains.kotlin.idea.facet.KotlinFacet; import org.jetbrains.kotlin.idea.project.NewInferenceForIDEAnalysisComponent; @@ -349,7 +347,7 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { ArraysKt.mapNotNullTo( LanguageVersion.values(), permittedAPIVersions, - version -> isLessOrEqual(version, upperBound) ? new VersionView.Specific(version) : null + version -> isLessOrEqual(version, upperBound) && !version.isUnsupported() ? new VersionView.Specific(version) : null ); apiVersionComboBox.setModel( new DefaultComboBoxModel(permittedAPIVersions.toArray()) @@ -368,13 +366,12 @@ public class KotlinCompilerConfigurableTab implements SearchableConfigurable { } } - @SuppressWarnings("unchecked") private void fillLanguageAndAPIVersionList() { languageVersionComboBox.addItem(VersionView.LatestStable.INSTANCE); apiVersionComboBox.addItem(VersionView.LatestStable.INSTANCE); for (LanguageVersion version : LanguageVersion.values()) { - if (!version.isStable() && !ApplicationManager.getApplication().isInternal()) { + if (version.isUnsupported() || !version.isStable() && !ApplicationManager.getApplication().isInternal()) { continue; } diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt index a55ee5ecc7b..e9e49e8131a 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt @@ -70,8 +70,8 @@ open class ConfigureKotlinInTempDirTest : AbstractConfigureKotlinInTempDirTest() ?: error("Facet settings are not found") Assert.assertEquals(false, settings.useProjectSettings) - Assert.assertEquals("1.0", settings.languageLevel!!.description) - Assert.assertEquals("1.0", settings.apiLevel!!.description) + Assert.assertEquals(LanguageVersion.KOTLIN_1_0, settings.languageLevel!!) + Assert.assertEquals(LanguageVersion.KOTLIN_1_0, settings.apiLevel!!) } fun testProject107InconsistentVersionInConfig() { @@ -79,8 +79,8 @@ open class ConfigureKotlinInTempDirTest : AbstractConfigureKotlinInTempDirTest() ?: error("Facet settings are not found") Assert.assertEquals(false, settings.useProjectSettings) - Assert.assertEquals("1.0", settings.languageLevel!!.description) - Assert.assertEquals("1.0", settings.apiLevel!!.description) + Assert.assertEquals(LanguageVersion.KOTLIN_1_0, settings.languageLevel!!) + Assert.assertEquals(LanguageVersion.KOTLIN_1_0, settings.apiLevel!!) } fun testFacetWithProjectSettings() { @@ -88,8 +88,8 @@ open class ConfigureKotlinInTempDirTest : AbstractConfigureKotlinInTempDirTest() ?: error("Facet settings are not found") Assert.assertEquals(true, settings.useProjectSettings) - Assert.assertEquals("1.1", settings.languageLevel!!.description) - Assert.assertEquals("1.1", settings.apiLevel!!.description) + Assert.assertEquals(LanguageVersion.KOTLIN_1_1, settings.languageLevel!!) + Assert.assertEquals(LanguageVersion.KOTLIN_1_1, settings.apiLevel!!) Assert.assertEquals( "-version -Xallow-kotlin-package -Xskip-metadata-version-check", settings.compilerSettings!!.additionalArguments diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java index c7d645df9ff..90fd0b76682 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java @@ -206,8 +206,8 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest { KotlinFacetSettings settings = KotlinFacetSettingsProvider.Companion.getInstance(myProject).getInitializedSettings(getModule()); K2JVMCompilerArguments arguments = (K2JVMCompilerArguments) settings.getCompilerArguments(); assertEquals(false, settings.getUseProjectSettings()); - assertEquals("1.1", settings.getLanguageLevel().getDescription()); - assertEquals("1.0", settings.getApiLevel().getDescription()); + assertEquals(LanguageVersion.KOTLIN_1_1, settings.getLanguageLevel()); + assertEquals(LanguageVersion.KOTLIN_1_0, settings.getApiLevel()); assertEquals(JvmPlatforms.INSTANCE.getJvm18(), settings.getTargetPlatform()); assertEquals("1.1", arguments.getLanguageVersion()); assertEquals("1.0", arguments.getApiVersion()); @@ -221,8 +221,8 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest { KotlinFacetSettings settings = KotlinFacetSettingsProvider.Companion.getInstance(myProject).getInitializedSettings(getModule()); K2JSCompilerArguments arguments = (K2JSCompilerArguments) settings.getCompilerArguments(); assertEquals(false, settings.getUseProjectSettings()); - assertEquals("1.1", settings.getLanguageLevel().getDescription()); - assertEquals("1.0", settings.getApiLevel().getDescription()); + assertEquals(LanguageVersion.KOTLIN_1_1, settings.getLanguageLevel()); + assertEquals(LanguageVersion.KOTLIN_1_0, settings.getApiLevel()); assertEquals(JsPlatforms.INSTANCE.getDefaultJsPlatform(), settings.getTargetPlatform()); assertEquals("1.1", arguments.getLanguageVersion()); assertEquals("1.0", arguments.getApiVersion()); @@ -236,8 +236,8 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest { KotlinFacetSettings settings = KotlinFacetSettingsProvider.Companion.getInstance(myProject).getInitializedSettings(getModule()); K2JVMCompilerArguments arguments = (K2JVMCompilerArguments) settings.getCompilerArguments(); assertEquals(false, settings.getUseProjectSettings()); - assertEquals("1.1", settings.getLanguageLevel().getDescription()); - assertEquals("1.0", settings.getApiLevel().getDescription()); + assertEquals(LanguageVersion.KOTLIN_1_1, settings.getLanguageLevel()); + assertEquals(LanguageVersion.KOTLIN_1_0, settings.getApiLevel()); assertEquals(JvmPlatforms.INSTANCE.getJvm18(), settings.getTargetPlatform()); assertEquals("1.1", arguments.getLanguageVersion()); assertEquals("1.0", arguments.getApiVersion()); @@ -251,8 +251,8 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest { KotlinFacetSettings settings = KotlinFacetSettingsProvider.Companion.getInstance(myProject).getInitializedSettings(getModule()); K2JSCompilerArguments arguments = (K2JSCompilerArguments) settings.getCompilerArguments(); assertEquals(false, settings.getUseProjectSettings()); - assertEquals("1.1", settings.getLanguageLevel().getDescription()); - assertEquals("1.0", settings.getApiLevel().getDescription()); + assertEquals(LanguageVersion.KOTLIN_1_1, settings.getLanguageLevel()); + assertEquals(LanguageVersion.KOTLIN_1_0, settings.getApiLevel()); assertEquals(JsPlatforms.INSTANCE.getDefaultJsPlatform(), settings.getTargetPlatform()); assertEquals("1.1", arguments.getLanguageVersion()); assertEquals("1.0", arguments.getApiVersion()); @@ -266,8 +266,8 @@ public class ConfigureKotlinTest extends AbstractConfigureKotlinTest { KotlinFacetSettings settings = KotlinFacetSettingsProvider.Companion.getInstance(myProject).getInitializedSettings(getModule()); K2JVMCompilerArguments arguments = (K2JVMCompilerArguments) settings.getCompilerArguments(); assertEquals(false, settings.getUseProjectSettings()); - assertEquals("1.1", settings.getLanguageLevel().getDescription()); - assertEquals("1.0", settings.getApiLevel().getDescription()); + assertEquals(LanguageVersion.KOTLIN_1_1, settings.getLanguageLevel()); + assertEquals(LanguageVersion.KOTLIN_1_0, settings.getApiLevel()); assertEquals(JvmPlatforms.INSTANCE.getJvm18(), settings.getTargetPlatform()); assertEquals("1.1", arguments.getLanguageVersion()); assertEquals("1.0", arguments.getApiVersion());