Remove unsupported versions from kotlin compiler tab in settings

KT-36146 In progress
This commit is contained in:
Pavel Kirpichenkov
2020-01-29 15:07:35 +03:00
parent 913ed71863
commit 9902643a26
8 changed files with 34 additions and 32 deletions
@@ -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
+1 -1
View File
@@ -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
+1 -1
View File
@@ -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
@@ -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
@@ -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"),
@@ -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;
}
@@ -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
@@ -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());