From 91749737f83970550bfabd05fefda7757914e535 Mon Sep 17 00:00:00 2001 From: Vyacheslav Karpukhin Date: Fri, 2 Dec 2022 21:43:58 +0100 Subject: [PATCH] [Gradle] Workaround KT-55222 via reflection to make the project compilable --- .../android/internal/AndroidDependencyResolver.kt | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidDependencyResolver.kt index 10c6c01fa09..f601687009a 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/android/internal/AndroidDependencyResolver.kt @@ -34,6 +34,7 @@ import org.gradle.api.services.BuildServiceParameters import org.gradle.api.services.BuildServiceRegistry import org.gradle.internal.component.local.model.DefaultLocalComponentGraphResolveState import org.gradle.internal.component.model.AttributeConfigurationSelector +import org.gradle.internal.component.model.ComponentResolveMetadata import org.gradle.internal.component.model.ConfigurationMetadata import org.gradle.internal.component.model.IvyArtifactName import org.jetbrains.kotlin.gradle.plugin.mpp.internal @@ -45,6 +46,7 @@ import org.jetbrains.kotlin.gradle.utils.lowerCamelCaseName import java.io.File import java.nio.file.Path import kotlin.reflect.KFunction +import kotlin.reflect.full.functions import kotlin.reflect.full.staticFunctions data class AndroidDependency( @@ -323,8 +325,12 @@ object AndroidDependencyResolver { attributes: AttributeContainer, attributesSchema: AttributesSchema, ) = projectDependencies.mapNotNull { projectDependency -> - val rootComponentMetaData = (projectDependency.findProjectConfiguration() as? ConfigurationInternal)?.toRootComponentMetaData() - ?: return@mapNotNull null + val configurationInternal = projectDependency.findProjectConfiguration() as? ConfigurationInternal ?: return@mapNotNull null + + @Suppress("UNCHECKED_CAST") val toRootComponentMetadata = + (configurationInternal::class.functions.find { it.name == "toRootComponentMetaData" } as? KFunction + ?: error("Method ConfigurationInternal.toRootComponentMetaData does not exist")) + val rootComponentMetaData = toRootComponentMetadata.call(configurationInternal) @Suppress("UNCHECKED_CAST") val selectConfiguration = AttributeConfigurationSelector::class.staticFunctions.find { it.name == "selectConfigurationUsingAttributeMatching" } as? KFunction