From 2f5dc93ba77e0eeb88d6420820b411f31986d875 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Mon, 28 Nov 2022 14:56:42 +0100 Subject: [PATCH] [Gradle] Replace IdeaKotlinProjectArtifactDependency.Resolver by resolved function ^KT-55112 Verification Pending --- .../gradle/idea/tcs/IdeaKotlinDependency.kt | 5 +- .../IdeaKotlinProjectArtifactDependency.kt | 63 ++++++------------- 2 files changed, 21 insertions(+), 47 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency.kt b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency.kt index d8e730b979c..f5456c31ad7 100644 --- a/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency.kt +++ b/libraries/tools/kotlin-gradle-plugin-idea/src/main/kotlin/org/jetbrains/kotlin/gradle/idea/tcs/IdeaKotlinDependency.kt @@ -5,13 +5,12 @@ package org.jetbrains.kotlin.gradle.idea.tcs -import org.jetbrains.kotlin.tooling.core.MutableExtras +import org.jetbrains.kotlin.tooling.core.HasMutableExtras import java.io.Serializable @IdeaKotlinModel -sealed interface IdeaKotlinDependency : Serializable { +sealed interface IdeaKotlinDependency : Serializable, HasMutableExtras { val coordinates: IdeaKotlinDependencyCoordinates? - val extras: MutableExtras companion object { const val CLASSPATH_BINARY_TYPE = "org.jetbrains.kotlin.gradle.idea.tcs.IdeDependency.classpathBinaryType" 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 9c7e4a507d6..94b676405af 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 @@ -3,10 +3,11 @@ * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. */ +@file:Suppress("UnusedReceiverParameter") + package org.jetbrains.kotlin.gradle.idea.tcs -import org.jetbrains.kotlin.tooling.core.MutableExtras -import org.jetbrains.kotlin.tooling.core.mutableExtrasOf +import org.jetbrains.kotlin.tooling.core.* data class IdeaKotlinProjectArtifactDependency( val type: IdeaKotlinSourceDependency.Type, @@ -14,52 +15,26 @@ data class IdeaKotlinProjectArtifactDependency( override val extras: MutableExtras = mutableExtrasOf() ) : IdeaKotlinDependency { - @IdeaKotlinService - fun interface Resolver { - fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency? - - companion object { - fun byName(resolveSourceSetName: (IdeaKotlinProjectArtifactDependency) -> String?): Resolver { - return DefaultProjectArtifactDependencyResolver(resolveSourceSetName) + fun resolved(sourceSetNames: Iterable): Set { + return sourceSetNames.toSet() + .map { sourceSetName -> + IdeaKotlinSourceDependency( + type = type, + extras = extras.toMutableExtras(), + coordinates = IdeaKotlinSourceCoordinates( + project = coordinates.project, + sourceSetName = sourceSetName + ) + ) } - - fun composite(vararg resolver: Resolver?) = - composite(resolver.toList()) - - fun composite(resolvers: Iterable): Resolver = - CompositeProjectArtifactDependencyResolver(resolvers.filterNotNull()) - - } + .onEach { it.projectArtifactDependencyOrigin = this } + .toSet() } internal companion object { const val serialVersionUID = 0L - } -} - -fun IdeaKotlinProjectArtifactDependency.resolved(resolver: IdeaKotlinProjectArtifactDependency.Resolver): IdeaKotlinSourceDependency? { - return resolver.resolve(this) -} - -private class DefaultProjectArtifactDependencyResolver( - private val resolveSourceSetName: (IdeaKotlinProjectArtifactDependency) -> String? -) : IdeaKotlinProjectArtifactDependency.Resolver { - override fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency? { - return IdeaKotlinSourceDependency( - type = dependency.type, - coordinates = IdeaKotlinSourceCoordinates( - project = dependency.coordinates.project, - sourceSetName = resolveSourceSetName(dependency) ?: return null - ), - extras = dependency.extras - ) - } -} - -private class CompositeProjectArtifactDependencyResolver( - private val resolvers: List -) : IdeaKotlinProjectArtifactDependency.Resolver { - override fun resolve(dependency: IdeaKotlinProjectArtifactDependency): IdeaKotlinSourceDependency? { - return resolvers.firstNotNullOfOrNull { resolver -> resolver.resolve(dependency) } + + var IdeaKotlinSourceDependency.projectArtifactDependencyOrigin by extrasKeyOf("origin") + private set } }