From e9436da858e0b49f7d3a34b397c5b705fd71347e Mon Sep 17 00:00:00 2001 From: Alexander Udalov Date: Thu, 28 Jan 2021 14:50:39 +0100 Subject: [PATCH] Change logic of applying JVM target from AGP options Now that the default JVM target is 1.8, we have to add the JVM target 1.6 explicitly if the Android project is configured with source/target 1.6, and not do anything if it's configured with 1.8. #KT-31027 --- .../AbstractKotlinAndroidGradleTests.kt | 34 +++++++++---------- .../kotlin/gradle/plugin/KotlinPlugin.kt | 6 ++-- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt index a7bf583801c..9074011f5ed 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/AbstractKotlinAndroidGradleTests.kt @@ -867,21 +867,7 @@ fun getSomething() = 10 fun testDetectAndroidJava8() = with(Project("AndroidProject")) { setupWorkingDir() - val kotlinJvmTarget18Regex = Regex("Kotlin compiler args: .* -jvm-target 1.8") - - gradleBuildScript("Lib").appendText( - "\n" + """ - android.compileOptions { - sourceCompatibility JavaVersion.VERSION_1_6 - targetCompatibility JavaVersion.VERSION_1_6 - } - """.trimIndent() - ) - - build(":Lib:assembleDebug", "-Pkotlin.setJvmTargetFromAndroidCompileOptions=true") { - assertSuccessful() - assertNotContains(kotlinJvmTarget18Regex) - } + val kotlinJvmTarget16Regex = Regex("Kotlin compiler args: .* -jvm-target 1.6") gradleBuildScript("Lib").appendText( "\n" + """ @@ -892,14 +878,28 @@ fun getSomething() = 10 """.trimIndent() ) + build(":Lib:assembleDebug", "-Pkotlin.setJvmTargetFromAndroidCompileOptions=true") { + assertSuccessful() + assertNotContains(kotlinJvmTarget16Regex) + } + + gradleBuildScript("Lib").appendText( + "\n" + """ + android.compileOptions { + sourceCompatibility JavaVersion.VERSION_1_6 + targetCompatibility JavaVersion.VERSION_1_6 + } + """.trimIndent() + ) + build("clean", ":Lib:assembleDebug") { assertSuccessful() - assertNotContains(kotlinJvmTarget18Regex) + assertNotContains(kotlinJvmTarget16Regex) } build(":Lib:assembleDebug", "-Pkotlin.setJvmTargetFromAndroidCompileOptions=true") { assertSuccessful() - assertContainsRegex(kotlinJvmTarget18Regex) + assertContainsRegex(kotlinJvmTarget16Regex) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt index 2195f8c040f..1d56732bf87 100755 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/KotlinPlugin.kt @@ -950,9 +950,9 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool private fun applyAndroidJavaVersion(baseExtension: BaseExtension, kotlinOptions: KotlinJvmOptions) { val javaVersion = - listOf(baseExtension.compileOptions.sourceCompatibility, baseExtension.compileOptions.targetCompatibility).min()!! - if (javaVersion >= JavaVersion.VERSION_1_8) - kotlinOptions.jvmTarget = "1.8" + minOf(baseExtension.compileOptions.sourceCompatibility, baseExtension.compileOptions.targetCompatibility) + if (javaVersion == JavaVersion.VERSION_1_6) + kotlinOptions.jvmTarget = "1.6" } private fun preprocessVariant(