Don't rely on the current project in dep-resolution if module is given

This commit is contained in:
Sergey Igushkin
2021-03-19 18:25:22 +03:00
parent f029179fe0
commit 470103bfac
3 changed files with 9 additions and 8 deletions
@@ -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)
@@ -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) }
@@ -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<MetadataDependencyResolution> {
val configurationToResolve = configurationToResolveMetadataDependencies(project, requestingFragment.containingModule)