diff --git a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt
index 9181648980f..7f96e5c24f4 100644
--- a/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt
+++ b/idea/idea-analysis/src/org/jetbrains/kotlin/idea/project/Platform.kt
@@ -64,8 +64,12 @@ fun Module.getAndCacheLanguageLevelByDependencies(): LanguageVersion {
}
else {
with(facetSettings.versionInfo) {
- this.languageLevel = languageLevel
- this.apiLevel = languageLevel
+ if (this.languageLevel == null) {
+ this.languageLevel = languageLevel
+ }
+ if (this.apiLevel == null) {
+ this.apiLevel = languageLevel
+ }
}
}
diff --git a/idea/testData/configuration/mockRuntime106/kotlin-runtime.jar b/idea/testData/configuration/mockRuntime106/kotlin-runtime.jar
new file mode 100644
index 00000000000..c62396395dd
Binary files /dev/null and b/idea/testData/configuration/mockRuntime106/kotlin-runtime.jar differ
diff --git a/idea/testData/configuration/mockRuntime11/kotlin-runtime.jar b/idea/testData/configuration/mockRuntime11/kotlin-runtime.jar
new file mode 100644
index 00000000000..24854eff673
Binary files /dev/null and b/idea/testData/configuration/mockRuntime11/kotlin-runtime.jar differ
diff --git a/idea/testData/configuration/projectWithFacetWithRuntime11WithLanguageLevel10/module.iml b/idea/testData/configuration/projectWithFacetWithRuntime11WithLanguageLevel10/module.iml
new file mode 100644
index 00000000000..c45d70ded14
--- /dev/null
+++ b/idea/testData/configuration/projectWithFacetWithRuntime11WithLanguageLevel10/module.iml
@@ -0,0 +1,52 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/configuration/projectWithFacetWithRuntime11WithLanguageLevel10/projectFile.ipr b/idea/testData/configuration/projectWithFacetWithRuntime11WithLanguageLevel10/projectFile.ipr
new file mode 100644
index 00000000000..a1407e2c8cd
--- /dev/null
+++ b/idea/testData/configuration/projectWithFacetWithRuntime11WithLanguageLevel10/projectFile.ipr
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/configuration/projectWithFacetWithRuntime11WithLanguageLevel10/src/foo.kt b/idea/testData/configuration/projectWithFacetWithRuntime11WithLanguageLevel10/src/foo.kt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime106WithoutLanguageLevel/module.iml b/idea/testData/configuration/projectWithoutFacetWithRuntime106WithoutLanguageLevel/module.iml
new file mode 100644
index 00000000000..4a3ded12725
--- /dev/null
+++ b/idea/testData/configuration/projectWithoutFacetWithRuntime106WithoutLanguageLevel/module.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime106WithoutLanguageLevel/projectFile.ipr b/idea/testData/configuration/projectWithoutFacetWithRuntime106WithoutLanguageLevel/projectFile.ipr
new file mode 100644
index 00000000000..c0885ca6faf
--- /dev/null
+++ b/idea/testData/configuration/projectWithoutFacetWithRuntime106WithoutLanguageLevel/projectFile.ipr
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime106WithoutLanguageLevel/src/foo.kt b/idea/testData/configuration/projectWithoutFacetWithRuntime106WithoutLanguageLevel/src/foo.kt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/lib/kotlin-runtme.jar b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/lib/kotlin-runtme.jar
new file mode 100644
index 00000000000..24854eff673
Binary files /dev/null and b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/lib/kotlin-runtme.jar differ
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/module.iml b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/module.iml
new file mode 100644
index 00000000000..4a3ded12725
--- /dev/null
+++ b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/module.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/projectFile.ipr b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/projectFile.ipr
new file mode 100644
index 00000000000..278094287bb
--- /dev/null
+++ b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/projectFile.ipr
@@ -0,0 +1,46 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/src/foo.kt b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithLanguageLevel10/src/foo.kt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime11WithoutLanguageLevel/module.iml b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithoutLanguageLevel/module.iml
new file mode 100644
index 00000000000..4a3ded12725
--- /dev/null
+++ b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithoutLanguageLevel/module.iml
@@ -0,0 +1,12 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime11WithoutLanguageLevel/projectFile.ipr b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithoutLanguageLevel/projectFile.ipr
new file mode 100644
index 00000000000..a1407e2c8cd
--- /dev/null
+++ b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithoutLanguageLevel/projectFile.ipr
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/configuration/projectWithoutFacetWithRuntime11WithoutLanguageLevel/src/foo.kt b/idea/testData/configuration/projectWithoutFacetWithRuntime11WithoutLanguageLevel/src/foo.kt
new file mode 100644
index 00000000000..e69de29bb2d
diff --git a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java
index 4875413dbf2..4beb5504129 100644
--- a/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java
+++ b/idea/tests/org/jetbrains/kotlin/idea/configuration/ConfigureKotlinTest.java
@@ -24,6 +24,8 @@ import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.util.io.FileUtilRt;
import com.intellij.testFramework.PlatformTestCase;
import org.jetbrains.annotations.NotNull;
+import org.jetbrains.kotlin.config.LanguageVersion;
+import org.jetbrains.kotlin.idea.project.PlatformKt;
import org.jetbrains.kotlin.utils.PathUtil;
import java.io.File;
@@ -173,6 +175,26 @@ public class ConfigureKotlinTest extends PlatformTestCase {
doTestOneJsModule(FileState.DO_NOT_COPY, LibraryState.NON_CONFIGURED_LIBRARY);
}
+ public void testProjectWithoutFacetWithRuntime106WithoutLanguageLevel() {
+ assertEquals(LanguageVersion.KOTLIN_1_0, PlatformKt.getLanguageVersionSettings(myProject, null).getLanguageVersion());
+ assertEquals(LanguageVersion.KOTLIN_1_0, PlatformKt.getLanguageVersionSettings(getModule()).getLanguageVersion());
+ }
+
+ public void testProjectWithoutFacetWithRuntime11WithoutLanguageLevel() {
+ assertEquals(LanguageVersion.KOTLIN_1_1, PlatformKt.getLanguageVersionSettings(myProject, null).getLanguageVersion());
+ assertEquals(LanguageVersion.KOTLIN_1_1, PlatformKt.getLanguageVersionSettings(getModule()).getLanguageVersion());
+ }
+
+ public void testProjectWithoutFacetWithRuntime11WithLanguageLevel10() {
+ assertEquals(LanguageVersion.KOTLIN_1_0, PlatformKt.getLanguageVersionSettings(myProject, null).getLanguageVersion());
+ assertEquals(LanguageVersion.KOTLIN_1_0, PlatformKt.getLanguageVersionSettings(getModule()).getLanguageVersion());
+ }
+
+ public void testProjectWithFacetWithRuntime11WithLanguageLevel10() {
+ assertEquals(LanguageVersion.KOTLIN_1_1, PlatformKt.getLanguageVersionSettings(myProject, null).getLanguageVersion());
+ assertEquals(LanguageVersion.KOTLIN_1_0, PlatformKt.getLanguageVersionSettings(getModule()).getLanguageVersion());
+ }
+
private void doTestConfigureModulesWithNonDefaultSetup(KotlinWithLibraryConfigurator configurator) {
assertNoFilesInDefaultPaths();