[Gradle] Fix warnings in DefaultKotlinJavaToolchain
^KT-56904 In Progress
This commit is contained in:
committed by
Space Team
parent
7913e12748
commit
50ac596bf2
+6
-2
@@ -16,6 +16,7 @@ import org.gradle.api.model.ObjectFactory
|
|||||||
import org.gradle.api.plugins.JavaPluginExtension
|
import org.gradle.api.plugins.JavaPluginExtension
|
||||||
import org.gradle.api.provider.Property
|
import org.gradle.api.provider.Property
|
||||||
import org.gradle.api.provider.Provider
|
import org.gradle.api.provider.Provider
|
||||||
|
import org.gradle.api.provider.ProviderFactory
|
||||||
import org.gradle.api.tasks.Internal
|
import org.gradle.api.tasks.Internal
|
||||||
import org.gradle.internal.jvm.Jvm
|
import org.gradle.internal.jvm.Jvm
|
||||||
import org.gradle.jvm.toolchain.*
|
import org.gradle.jvm.toolchain.*
|
||||||
@@ -32,6 +33,7 @@ import javax.inject.Inject
|
|||||||
internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
|
internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
|
||||||
private val objects: ObjectFactory,
|
private val objects: ObjectFactory,
|
||||||
projectLayout: ProjectLayout,
|
projectLayout: ProjectLayout,
|
||||||
|
providerFactory: ProviderFactory,
|
||||||
jvmCompilerOptions: () -> KotlinJvmCompilerOptions?
|
jvmCompilerOptions: () -> KotlinJvmCompilerOptions?
|
||||||
) : KotlinJavaToolchain {
|
) : KotlinJavaToolchain {
|
||||||
|
|
||||||
@@ -86,13 +88,14 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
|
|||||||
.chainedFinalizeValueOnRead()
|
.chainedFinalizeValueOnRead()
|
||||||
|
|
||||||
private fun getToolsJarFromJvm(
|
private fun getToolsJarFromJvm(
|
||||||
|
providerFactory: ProviderFactory,
|
||||||
jvmProvider: Provider<Jvm>,
|
jvmProvider: Provider<Jvm>,
|
||||||
javaVersionProvider: Provider<JavaVersion>
|
javaVersionProvider: Provider<JavaVersion>
|
||||||
): Provider<File?> {
|
): Provider<File?> {
|
||||||
return objects
|
return objects
|
||||||
.propertyWithConvention(
|
.propertyWithConvention(
|
||||||
javaVersionProvider.flatMap { javaVersion ->
|
javaVersionProvider.flatMap { javaVersion ->
|
||||||
jvmProvider.map { jvm ->
|
jvmProvider.mapOrNull(providerFactory) { jvm ->
|
||||||
jvm.toolsJar.also {
|
jvm.toolsJar.also {
|
||||||
if (it == null && javaVersion < JavaVersion.VERSION_1_9) {
|
if (it == null && javaVersion < JavaVersion.VERSION_1_9) {
|
||||||
throw GradleException(
|
throw GradleException(
|
||||||
@@ -107,10 +110,11 @@ internal abstract class DefaultKotlinJavaToolchain @Inject constructor(
|
|||||||
}
|
}
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
internal val jdkToolsJar: Provider<File?> = getToolsJarFromJvm(buildJvm, javaVersion)
|
internal val jdkToolsJar: Provider<File?> = getToolsJarFromJvm(providerFactory, buildJvm, javaVersion)
|
||||||
|
|
||||||
@get:Internal
|
@get:Internal
|
||||||
internal val currentJvmJdkToolsJar: Provider<File?> = getToolsJarFromJvm(
|
internal val currentJvmJdkToolsJar: Provider<File?> = getToolsJarFromJvm(
|
||||||
|
providerFactory,
|
||||||
gradleJvm,
|
gradleJvm,
|
||||||
gradleJvm.map {
|
gradleJvm.map {
|
||||||
// Current JVM should always have java version
|
// Current JVM should always have java version
|
||||||
|
|||||||
+7
@@ -16,6 +16,13 @@ import org.gradle.api.provider.*
|
|||||||
import java.io.File
|
import java.io.File
|
||||||
import kotlin.reflect.KProperty
|
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> Provider<T>.getValue(thisRef: Any?, property: KProperty<*>) = get()
|
||||||
|
|
||||||
internal operator fun <T> Property<T>.setValue(thisRef: Any?, property: KProperty<*>, value: T) {
|
internal operator fun <T> Property<T>.setValue(thisRef: Any?, property: KProperty<*>, value: T) {
|
||||||
|
|||||||
Reference in New Issue
Block a user