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)
+ }
}