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();