[Gradle] Fix warnings in DefaultKotlinJavaToolchain

^KT-56904 In Progress
This commit is contained in:
Yahor Berdnikau
2024-02-07 10:09:33 +01:00
committed by Space Team
parent 7913e12748
commit 50ac596bf2
2 changed files with 13 additions and 2 deletions
@@ -16,6 +16,7 @@ import org.gradle.api.model.ObjectFactory
import org.gradle.api.plugins.JavaPluginExtension
import org.gradle.api.provider.Property
import org.gradle.api.provider.Provider
import org.gradle.api.provider.ProviderFactory
import org.gradle.api.tasks.Internal
import org.gradle.internal.jvm.Jvm
import org.gradle.jvm.toolchain.*
@@ -32,6 +33,7 @@ import javax.inject.Inject
internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
private val objects: ObjectFactory,
projectLayout: ProjectLayout,
providerFactory: ProviderFactory,
jvmCompilerOptions: () -> KotlinJvmCompilerOptions?
) : KotlinJavaToolchain {
@@ -86,13 +88,14 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
.chainedFinalizeValueOnRead()
private fun getToolsJarFromJvm(
providerFactory: ProviderFactory,
jvmProvider: Provider<Jvm>,
javaVersionProvider: Provider<JavaVersion>
): Provider<File?> {
return objects
.propertyWithConvention(
javaVersionProvider.flatMap { javaVersion ->
jvmProvider.map { jvm ->
jvmProvider.mapOrNull(providerFactory) { jvm ->
jvm.toolsJar.also {
if (it == null && javaVersion < JavaVersion.VERSION_1_9) {
throw GradleException(
@@ -107,10 +110,11 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
}
@get:Internal
internal val jdkToolsJar: Provider<File?> = getToolsJarFromJvm(buildJvm, javaVersion)
internal val jdkToolsJar: Provider<File?> = getToolsJarFromJvm(providerFactory, buildJvm, javaVersion)
@get:Internal
internal val currentJvmJdkToolsJar: Provider<File?> = getToolsJarFromJvm(
providerFactory,
gradleJvm,
gradleJvm.map {
// Current JVM should always have java version
@@ -16,6 +16,13 @@ import org.gradle.api.provider.*
import java.io.File
import kotlin.reflect.KProperty
// Workaround for https://github.com/gradle/gradle/issues/12388
// which should be fixed via https://github.com/gradle/gradle/issues/24767
internal fun <IN : Any, OUT> Provider<IN>.mapOrNull(
providerFactory: ProviderFactory,
block: (IN) -> OUT?
): Provider<OUT> = flatMap { providerFactory.provider { (block(it)) } }
internal operator fun <T> Provider<T>.getValue(thisRef: Any?, property: KProperty<*>) = get()
internal operator fun <T> Property<T>.setValue(thisRef: Any?, property: KProperty<*>, value: T) {