diff --git a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt index 348190d62cb..eb2b094b2d8 100644 --- a/idea/idea-jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt +++ b/idea/idea-jps-common/src/org/jetbrains/kotlin/config/facetSerialization.kt @@ -33,7 +33,10 @@ private fun readV1Config(element: Element): KotlinFacetSettings { return KotlinFacetSettings().apply { val useProjectSettings = element.getOptionValue("useProjectSettings")?.toBoolean() - val targetPlatformName = element.getOptionBody("versionInfo")?.getOptionValue("targetPlatformName") + val versionInfoElement = element.getOptionBody("versionInfo") + val targetPlatformName = versionInfoElement?.getOptionValue("targetPlatformName") + val languageLevel = versionInfoElement?.getOptionValue("languageLevel") + val apiLevel = versionInfoElement?.getOptionValue("apiLevel") val targetPlatform = TargetPlatformKind.ALL_PLATFORMS.firstOrNull { it.description == targetPlatformName } ?: TargetPlatformKind.Jvm[JvmTarget.DEFAULT] @@ -57,6 +60,14 @@ private fun readV1Config(element: Element): KotlinFacetSettings { is K2JSCompilerArguments -> jsArgumentsElement?.let { XmlSerializer.deserializeInto(compilerArguments, it) } } + if (languageLevel != null) { + compilerArguments.languageVersion = languageLevel + } + + if (apiLevel != null) { + compilerArguments.apiVersion = apiLevel + } + if (useProjectSettings != null) { this.useProjectSettings = useProjectSettings } diff --git a/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/kotlinc.xml b/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/kotlinc.xml new file mode 100644 index 00000000000..a86b0591b70 --- /dev/null +++ b/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/kotlinc.xml @@ -0,0 +1,17 @@ + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/libraries/KotlinJavaRuntime.xml b/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/libraries/KotlinJavaRuntime.xml new file mode 100644 index 00000000000..c630c0b8796 --- /dev/null +++ b/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/libraries/KotlinJavaRuntime.xml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/misc.xml b/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/misc.xml new file mode 100644 index 00000000000..6e95083dfb7 --- /dev/null +++ b/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/misc.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/modules.xml b/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/modules.xml new file mode 100644 index 00000000000..ad383958950 --- /dev/null +++ b/idea/testData/configuration/project106InconsistentVersionInConfig/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project106InconsistentVersionInConfig/createdIn106.iml b/idea/testData/configuration/project106InconsistentVersionInConfig/createdIn106.iml new file mode 100644 index 00000000000..6f227774ac8 --- /dev/null +++ b/idea/testData/configuration/project106InconsistentVersionInConfig/createdIn106.iml @@ -0,0 +1,89 @@ + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project106InconsistentVersionInConfig/src/Test3.kt b/idea/testData/configuration/project106InconsistentVersionInConfig/src/Test3.kt new file mode 100644 index 00000000000..40e7ac42ed6 --- /dev/null +++ b/idea/testData/configuration/project106InconsistentVersionInConfig/src/Test3.kt @@ -0,0 +1,3 @@ +package test3 + +class C diff --git a/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/createdIn107.iml b/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/createdIn107.iml new file mode 100644 index 00000000000..7277e4b32f6 --- /dev/null +++ b/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/createdIn107.iml @@ -0,0 +1,88 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/kotlinc.xml b/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/kotlinc.xml new file mode 100644 index 00000000000..a86b0591b70 --- /dev/null +++ b/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/kotlinc.xml @@ -0,0 +1,17 @@ + + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/misc.xml b/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/misc.xml new file mode 100644 index 00000000000..b7952696cf7 --- /dev/null +++ b/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/misc.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/modules.xml b/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/modules.xml new file mode 100644 index 00000000000..ff7e548a15f --- /dev/null +++ b/idea/testData/configuration/project107InconsistentVersionInConfig/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/idea/testData/configuration/project107InconsistentVersionInConfig/src/Test1.kt b/idea/testData/configuration/project107InconsistentVersionInConfig/src/Test1.kt new file mode 100644 index 00000000000..b4978d41654 --- /dev/null +++ b/idea/testData/configuration/project107InconsistentVersionInConfig/src/Test1.kt @@ -0,0 +1,3 @@ +package test1 + +class A diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt index 3204ac5813c..0971f06066c 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinInTempDirTest.kt @@ -19,6 +19,7 @@ package org.jetbrains.kotlin.idea.configuration import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.application.impl.ApplicationImpl import com.intellij.openapi.util.io.FileUtil +import org.jetbrains.kotlin.config.KotlinFacetSettingsProvider import org.jetbrains.kotlin.config.LanguageVersion import org.jetbrains.kotlin.idea.project.getLanguageVersionSettings import org.jetbrains.kotlin.idea.project.languageVersionSettings @@ -62,4 +63,18 @@ class ConfigureKotlinInTempDirTest : AbstractConfigureKotlinTest() { Assert.assertEquals(LanguageVersion.KOTLIN_1_1, module.languageVersionSettings.languageVersion) Assert.assertTrue(project.baseDir.findFileByRelativePath(".idea/kotlinc.xml") == null) } + + fun testProject106InconsistentVersionInConfig() { + val settings = KotlinFacetSettingsProvider.getInstance(myProject).getSettings(module) + Assert.assertEquals(false, settings.useProjectSettings) + Assert.assertEquals("1.0", settings.languageLevel!!.description) + Assert.assertEquals("1.0", settings.apiLevel!!.description) + } + + fun testProject107InconsistentVersionInConfig() { + val settings = KotlinFacetSettingsProvider.getInstance(myProject).getSettings(module) + Assert.assertEquals(false, settings.useProjectSettings) + Assert.assertEquals("1.0", settings.languageLevel!!.description) + Assert.assertEquals("1.0", settings.apiLevel!!.description) + } }