diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency.kt index 5bf93baf096..f2b248a2d31 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinProjectArtifactDependency.kt @@ -21,6 +21,13 @@ data class IdeaKotlinProjectArtifactDependency( fun byName(resolveSourceSetName: (IdeaKotlinProjectArtifactDependency) -> String?): Resolver { return DefaultProjectArtifactDependencyResolver(resolveSourceSetName) } + + fun composite(vararg resolver: Resolver?) = + composite(resolver.toList()) + + fun composite(resolvers: Iterable): Resolver = + CompositeProjectArtifactDependencyResolver(resolvers.filterNotNull()) + } } @@ -47,3 +54,11 @@ private class DefaultProjectArtifactDependencyResolver( ) } } + +private class CompositeProjectArtifactDependencyResolver( + private val resolvers: List +) : IdeaKotlinProjectArtifactDependency.Resolver { + override fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency? { + return resolvers.firstNotNullOfOrNull { resolver -> resolver.resolve(dependency) } + } +}