Kotlin Facet: Do not auto-advance version in imported projects

#KT-21879 Fixed
This commit is contained in:
Alexey Sedunov
2017-12-18 20:43:33 +03:00
parent 88540360b4
commit b5bd5942e7
5 changed files with 26 additions and 0 deletions
@@ -212,6 +212,8 @@ private fun configureFacetByGradleModule(
testOutputPath = getExplicitTestOutputPath(moduleNode, platformKind) testOutputPath = getExplicitTestOutputPath(moduleNode, platformKind)
} }
kotlinFacet.noVersionAutoAdvance()
return kotlinFacet return kotlinFacet
} }
@@ -89,6 +89,8 @@ class GradleFacetImportTest : GradleImportingTestCase() {
with (facetSettings) { with (facetSettings) {
Assert.assertEquals("1.1", languageLevel!!.versionString) Assert.assertEquals("1.1", languageLevel!!.versionString)
Assert.assertEquals("1.1", apiLevel!!.versionString) Assert.assertEquals("1.1", apiLevel!!.versionString)
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
Assert.assertEquals(TargetPlatformKind.Jvm[JvmTarget.JVM_1_8], targetPlatformKind) Assert.assertEquals(TargetPlatformKind.Jvm[JvmTarget.JVM_1_8], targetPlatformKind)
Assert.assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget) Assert.assertEquals("1.7", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
Assert.assertEquals("-Xdump-declarations-to=tmp -Xsingle-module", Assert.assertEquals("-Xdump-declarations-to=tmp -Xsingle-module",
@@ -97,6 +99,8 @@ class GradleFacetImportTest : GradleImportingTestCase() {
with (testFacetSettings) { with (testFacetSettings) {
Assert.assertEquals("1.1", languageLevel!!.versionString) Assert.assertEquals("1.1", languageLevel!!.versionString)
Assert.assertEquals("1.0", apiLevel!!.versionString) Assert.assertEquals("1.0", apiLevel!!.versionString)
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
Assert.assertEquals(TargetPlatformKind.Jvm[JvmTarget.JVM_1_6], targetPlatformKind) Assert.assertEquals(TargetPlatformKind.Jvm[JvmTarget.JVM_1_6], targetPlatformKind)
Assert.assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget) Assert.assertEquals("1.6", (compilerArguments as K2JVMCompilerArguments).jvmTarget)
Assert.assertEquals("-Xdump-declarations-to=tmpTest", Assert.assertEquals("-Xdump-declarations-to=tmpTest",
@@ -465,6 +469,8 @@ compileTestKotlin {
with (facetSettings) { with (facetSettings) {
Assert.assertEquals("1.1", languageLevel!!.versionString) Assert.assertEquals("1.1", languageLevel!!.versionString)
Assert.assertEquals("1.1", apiLevel!!.versionString) Assert.assertEquals("1.1", apiLevel!!.versionString)
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
Assert.assertEquals(TargetPlatformKind.JavaScript, targetPlatformKind) Assert.assertEquals(TargetPlatformKind.JavaScript, targetPlatformKind)
with(compilerArguments as K2JSCompilerArguments) { with(compilerArguments as K2JSCompilerArguments) {
Assert.assertEquals(true, sourceMap) Assert.assertEquals(true, sourceMap)
@@ -477,6 +483,8 @@ compileTestKotlin {
with (testFacetSettings) { with (testFacetSettings) {
Assert.assertEquals("1.1", languageLevel!!.versionString) Assert.assertEquals("1.1", languageLevel!!.versionString)
Assert.assertEquals("1.0", apiLevel!!.versionString) Assert.assertEquals("1.0", apiLevel!!.versionString)
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
Assert.assertEquals(TargetPlatformKind.JavaScript, targetPlatformKind) Assert.assertEquals(TargetPlatformKind.JavaScript, targetPlatformKind)
with(compilerArguments as K2JSCompilerArguments) { with(compilerArguments as K2JSCompilerArguments) {
Assert.assertEquals(false, sourceMap) Assert.assertEquals(false, sourceMap)
@@ -1713,6 +1721,8 @@ compileTestKotlin {
with (facetSettings) { with (facetSettings) {
Assert.assertEquals("1.1", languageLevel!!.versionString) Assert.assertEquals("1.1", languageLevel!!.versionString)
Assert.assertEquals("1.0", apiLevel!!.versionString) Assert.assertEquals("1.0", apiLevel!!.versionString)
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
Assert.assertEquals(TargetPlatformKind.Common, targetPlatformKind) Assert.assertEquals(TargetPlatformKind.Common, targetPlatformKind)
Assert.assertEquals("my/classpath", (compilerArguments as K2MetadataCompilerArguments).classpath) Assert.assertEquals("my/classpath", (compilerArguments as K2MetadataCompilerArguments).classpath)
Assert.assertEquals("my/destination", (compilerArguments as K2MetadataCompilerArguments).destination) Assert.assertEquals("my/destination", (compilerArguments as K2MetadataCompilerArguments).destination)
@@ -1721,6 +1731,8 @@ compileTestKotlin {
with (facetSettings("project_test")) { with (facetSettings("project_test")) {
Assert.assertEquals("1.1", languageLevel!!.versionString) Assert.assertEquals("1.1", languageLevel!!.versionString)
Assert.assertEquals("1.0", apiLevel!!.versionString) Assert.assertEquals("1.0", apiLevel!!.versionString)
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
Assert.assertEquals(TargetPlatformKind.Common, targetPlatformKind) Assert.assertEquals(TargetPlatformKind.Common, targetPlatformKind)
Assert.assertEquals("my/test/classpath", (compilerArguments as K2MetadataCompilerArguments).classpath) Assert.assertEquals("my/test/classpath", (compilerArguments as K2MetadataCompilerArguments).classpath)
Assert.assertEquals("my/test/destination", (compilerArguments as K2MetadataCompilerArguments).destination) Assert.assertEquals("my/test/destination", (compilerArguments as K2MetadataCompilerArguments).destination)
@@ -207,6 +207,7 @@ class KotlinMavenImporter : MavenImporter(KOTLIN_PLUGIN_GROUP_ID, KOTLIN_PLUGIN_
} }
MavenProjectImportHandler.getInstances(module.project).forEach { it(kotlinFacet, mavenProject) } MavenProjectImportHandler.getInstances(module.project).forEach { it(kotlinFacet, mavenProject) }
setImplementedModuleName(kotlinFacet, mavenProject, module) setImplementedModuleName(kotlinFacet, mavenProject, module)
kotlinFacet.noVersionAutoAdvance()
} }
private fun detectPlatform(mavenProject: MavenProject) = detectPlatformByExecutions(mavenProject) ?: private fun detectPlatform(mavenProject: MavenProject) = detectPlatformByExecutions(mavenProject) ?:
@@ -460,6 +460,8 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("1.1", compilerArguments!!.languageVersion) Assert.assertEquals("1.1", compilerArguments!!.languageVersion)
Assert.assertEquals("1.0", apiLevel!!.versionString) Assert.assertEquals("1.0", apiLevel!!.versionString)
Assert.assertEquals("1.0", compilerArguments!!.apiVersion) Assert.assertEquals("1.0", compilerArguments!!.apiVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
Assert.assertEquals(true, compilerArguments!!.suppressWarnings) Assert.assertEquals(true, compilerArguments!!.suppressWarnings)
Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport) Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
Assert.assertEquals("JVM 1.8", targetPlatformKind!!.description) Assert.assertEquals("JVM 1.8", targetPlatformKind!!.description)
@@ -586,6 +588,8 @@ class KotlinMavenImporterTest : MavenImportingTestCase() {
Assert.assertEquals("1.1", compilerArguments!!.languageVersion) Assert.assertEquals("1.1", compilerArguments!!.languageVersion)
Assert.assertEquals("1.0", apiLevel!!.versionString) Assert.assertEquals("1.0", apiLevel!!.versionString)
Assert.assertEquals("1.0", compilerArguments!!.apiVersion) Assert.assertEquals("1.0", compilerArguments!!.apiVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceLanguageVersion)
Assert.assertFalse(compilerArguments!!.autoAdvanceApiVersion)
Assert.assertEquals(true, compilerArguments!!.suppressWarnings) Assert.assertEquals(true, compilerArguments!!.suppressWarnings)
Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport) Assert.assertEquals(LanguageFeature.State.ENABLED, coroutineSupport)
Assert.assertTrue(targetPlatformKind is TargetPlatformKind.JavaScript) Assert.assertTrue(targetPlatformKind is TargetPlatformKind.JavaScript)
@@ -228,6 +228,13 @@ fun KotlinFacet.configureFacet(
} }
} }
fun KotlinFacet.noVersionAutoAdvance() {
configuration.settings.compilerArguments?.let {
it.autoAdvanceLanguageVersion = false
it.autoAdvanceApiVersion = false
}
}
// "Primary" fields are written to argument beans directly and thus not presented in the "additional arguments" string // "Primary" fields are written to argument beans directly and thus not presented in the "additional arguments" string
// Update these lists when facet/project settings UI changes // Update these lists when facet/project settings UI changes
val commonUIExposedFields = listOf(CommonCompilerArguments::languageVersion.name, val commonUIExposedFields = listOf(CommonCompilerArguments::languageVersion.name,