From 470103bfac5efae0698018ef81b816ee566feb87 Mon Sep 17 00:00:00 2001 From: Sergey Igushkin Date: Fri, 19 Mar 2021 18:25:22 +0300 Subject: [PATCH] Don't rely on the current project in dep-resolution if module is given --- .../gradle/plugin/mpp/pm20/DependencyGraphResolver.kt | 5 ++--- .../kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt | 8 +++++--- .../plugin/mpp/pm20/FragmentGranularMetadataResolver.kt | 4 ++-- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt index c8f92cdc01a..f6148e1d8a1 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyGraphResolver.kt @@ -31,12 +31,11 @@ internal fun configurationToResolveMetadataDependencies(project: Project, reques class GradleKotlinDependencyGraphResolver( - private val project: Project, private val moduleResolver: ModuleDependencyResolver ) : KotlinDependencyGraphResolver { - private fun configurationToResolve(requestingModule: KotlinModule): Configuration = - configurationToResolveMetadataDependencies(project, requestingModule) + private fun configurationToResolve(requestingModule: KotlinGradleModule): Configuration = + configurationToResolveMetadataDependencies(requestingModule.project, requestingModule) override fun resolveDependencyGraph(requestingModule: KotlinModule): DependencyGraphResolution { if (requestingModule !is KotlinGradleModule) diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt index 451667e8f60..502f5f0b2e8 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/DependencyResolution.kt @@ -21,15 +21,17 @@ import org.jetbrains.kotlin.project.model.* import java.util.ArrayDeque class GradleModuleDependencyResolver( - private val project: Project, private val projectStructureMetadataModuleBuilder: ProjectStructureMetadataModuleBuilder, private val projectModuleBuilder: GradleProjectModuleBuilder ) : ModuleDependencyResolver { - private fun configurationToResolve(requestingModule: KotlinModule): Configuration = - configurationToResolveMetadataDependencies(project, requestingModule) + private fun configurationToResolve(requestingModule: KotlinGradleModule): Configuration = + configurationToResolveMetadataDependencies(requestingModule.project, requestingModule) override fun resolveDependency(requestingModule: KotlinModule, moduleDependency: KotlinModuleDependency): KotlinModule? { + require(requestingModule is KotlinGradleModule) + val project = requestingModule.project + val allComponents = configurationToResolve(requestingModule).incoming.resolutionResult.allComponents // TODO: optimize O(n) search, store the resolved components with dependency keys? val component = allComponents.find { it.id.matchesModuleDependency(moduleDependency) } diff --git a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt index e3d8b8b93a9..d89944c0252 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/main/kotlin/org/jetbrains/kotlin/gradle/plugin/mpp/pm20/FragmentGranularMetadataResolver.kt @@ -33,10 +33,10 @@ internal class FragmentGranularMetadataResolver( private val metadataModuleBuilder = ProjectStructureMetadataModuleBuilder() private val projectModuleBuilder = GradleProjectModuleBuilder(true) - private val moduleResolver = GradleModuleDependencyResolver(project, metadataModuleBuilder, projectModuleBuilder) + private val moduleResolver = GradleModuleDependencyResolver(metadataModuleBuilder, projectModuleBuilder) private val variantResolver = GradleModuleVariantResolver(project) private val fragmentResolver = DefaultModuleFragmentsResolver(variantResolver) - private val dependencyGraphResolver = GradleKotlinDependencyGraphResolver(project, moduleResolver) + private val dependencyGraphResolver = GradleKotlinDependencyGraphResolver(moduleResolver) private fun doResolveMetadataDependencies(): Iterable { val configurationToResolve = configurationToResolveMetadataDependencies(project, requestingFragment.containingModule)