Gradle: remove setJvmTargetFromAndroidCompileOptions
This flag was introduced for KT-21030 (see also KT-31027), to change JVM
target 1.6 to 1.8 if Android options declare source/target compatibility
with JDK 1.8.
After JVM target 1.8 became the default for Kotlin (KT-29405), the logic
was changed in e9436da858 to the reverse: if Android options declare
source/target compatibility 1.6, then also use JVM target 1.6. Note that
at that point, the problem with usages of default interface methods
described in KT-21030 became obsolete, because it described a runtime
crash when Kotlin tooling failed to recognized that JVM target >= 1.8
should be used -- which was now always the case, unless you explicitly
opted in with `-jvm-target 1.6` (which would make little sense).
Now that we're removing support for JVM target 1.6 in KT-45165, there is
no use in this flag anymore. Even if Android options declare
source/target compatibility 1.6, Kotlin should still use the minimal
supported version for the JVM target, which is now 1.8. And since 1.8
is the default, no changes to the compiler options are needed.
This commit is contained in:
-40
@@ -1098,46 +1098,6 @@ fun getSomething() = 10
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun testDetectAndroidJava8() = with(Project("AndroidProject")) {
|
||||
setupWorkingDir()
|
||||
|
||||
val kotlinJvmTarget16Regex = Regex("Kotlin compiler args: .* -jvm-target 1.6")
|
||||
|
||||
gradleBuildScript("Lib").appendText(
|
||||
"\n" + """
|
||||
android.compileOptions {
|
||||
sourceCompatibility JavaVersion.VERSION_1_8
|
||||
targetCompatibility JavaVersion.VERSION_1_8
|
||||
}
|
||||
""".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(kotlinJvmTarget16Regex)
|
||||
}
|
||||
|
||||
build(":Lib:assembleDebug", "-Pkotlin.setJvmTargetFromAndroidCompileOptions=true") {
|
||||
assertSuccessful()
|
||||
assertContainsRegex(kotlinJvmTarget16Regex)
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
fun shouldAllowToApplyPluginWhenAndroidPluginIsMissing() {
|
||||
with(Project("simpleProject", minLogLevel = LogLevel.WARN)) {
|
||||
|
||||
+10
-21
@@ -6,8 +6,10 @@
|
||||
package org.jetbrains.kotlin.gradle.plugin
|
||||
|
||||
import com.android.build.gradle.*
|
||||
import com.android.build.gradle.BasePlugin
|
||||
import com.android.build.gradle.api.*
|
||||
import com.android.build.gradle.api.AndroidSourceSet
|
||||
import com.android.build.gradle.api.BaseVariant
|
||||
import com.android.build.gradle.api.SourceKind
|
||||
import com.android.build.gradle.api.UnitTestVariant
|
||||
import org.gradle.api.*
|
||||
import org.gradle.api.attributes.Category
|
||||
import org.gradle.api.attributes.Usage
|
||||
@@ -16,12 +18,16 @@ import org.gradle.api.file.Directory
|
||||
import org.gradle.api.file.FileCollection
|
||||
import org.gradle.api.file.SourceDirectorySet
|
||||
import org.gradle.api.logging.Logging
|
||||
import org.gradle.api.plugins.*
|
||||
import org.gradle.api.plugins.InvalidPluginException
|
||||
import org.gradle.api.plugins.JavaPlugin
|
||||
import org.gradle.api.plugins.JavaPluginConvention
|
||||
import org.gradle.api.provider.Provider
|
||||
import org.gradle.api.publish.PublishingExtension
|
||||
import org.gradle.api.publish.maven.MavenPom
|
||||
import org.gradle.api.publish.maven.MavenPublication
|
||||
import org.gradle.api.tasks.*
|
||||
import org.gradle.api.tasks.SourceSet
|
||||
import org.gradle.api.tasks.TaskProvider
|
||||
import org.gradle.api.tasks.Upload
|
||||
import org.gradle.api.tasks.compile.AbstractCompile
|
||||
import org.gradle.jvm.tasks.Jar
|
||||
import org.gradle.tooling.provider.model.ToolingModelBuilderRegistry
|
||||
@@ -743,16 +749,6 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool
|
||||
val ext = project.extensions.getByName("android") as BaseExtension
|
||||
|
||||
val kotlinOptions = KotlinJvmOptionsImpl()
|
||||
project.whenEvaluated {
|
||||
// TODO don't require the flag once there is an Android Gradle plugin build that supports desugaring of Long.hashCode and
|
||||
// Boolean.hashCode. Instead, run conditionally, only with the AGP versions that play well with Kotlin bytecode for
|
||||
// JVM target 1.8.
|
||||
// See: KT-31027
|
||||
if (PropertiesProvider(project).setJvmTargetFromAndroidCompileOptions == true) {
|
||||
applyAndroidJavaVersion(project.extensions.getByType(BaseExtension::class.java), kotlinOptions)
|
||||
}
|
||||
}
|
||||
|
||||
kotlinOptions.noJdk = true
|
||||
ext.addExtension(KOTLIN_OPTIONS_DSL_NAME, kotlinOptions)
|
||||
|
||||
@@ -890,13 +886,6 @@ abstract class AbstractAndroidProjectHandler(private val kotlinConfigurationTool
|
||||
}
|
||||
}
|
||||
|
||||
private fun applyAndroidJavaVersion(baseExtension: BaseExtension, kotlinOptions: KotlinJvmOptions) {
|
||||
val javaVersion =
|
||||
minOf(baseExtension.compileOptions.sourceCompatibility, baseExtension.compileOptions.targetCompatibility)
|
||||
if (javaVersion == JavaVersion.VERSION_1_6)
|
||||
kotlinOptions.jvmTarget = "1.6"
|
||||
}
|
||||
|
||||
private fun addAndroidUnitTestTasksAsDependenciesToAllTest(project: Project) {
|
||||
val allTestTaskName = project.kotlinTestRegistry.allTestsTaskName
|
||||
project.tasks.matching { it.name == allTestTaskName }.configureEach { task ->
|
||||
|
||||
-3
@@ -141,9 +141,6 @@ internal class PropertiesProvider private constructor(private val project: Proje
|
||||
val ignorePluginLoadedInMultipleProjects: Boolean?
|
||||
get() = booleanProperty("kotlin.pluginLoadedInMultipleProjects.ignore")
|
||||
|
||||
val setJvmTargetFromAndroidCompileOptions: Boolean?
|
||||
get() = booleanProperty("kotlin.setJvmTargetFromAndroidCompileOptions")
|
||||
|
||||
val keepAndroidBuildTypeAttribute: Boolean
|
||||
get() = booleanProperty("kotlin.android.buildTypeAttribute.keep") ?: false
|
||||
|
||||
|
||||
Reference in New Issue
Block a user