From 05b8a26a1794117a5983a70a4e6c905de5e08fc9 Mon Sep 17 00:00:00 2001 From: Sebastian Sellmair Date: Tue, 29 Nov 2022 11:13:01 +0100 Subject: [PATCH] [Gradle] IdeMultiplatformImport: Support LibraryBinaryIdentifier --- .../gradle/plugin/ide/IdeMultiplatformImport.kt | 4 ++-- .../plugin/ide/IdeMultiplatformImportFactory.kt | 4 ++-- .../plugin/ide/IdeMultiplatformImportImpl.kt | 4 ++-- .../IdePlatformDependencyResolver.kt | 14 ++++++++++++++ 4 files changed, 20 insertions(+), 6 deletions(-) diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport.kt index a82c649f1c3..5eb11e3ebdc 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImport.kt @@ -8,7 +8,7 @@ package org.jetbrains.kotlin.gradle.plugin.ide import org.gradle.api.Project import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi -import org.jetbrains.kotlin.gradle.dsl.multiplatformExtension +import org.jetbrains.kotlin.gradle.dsl.kotlinExtension import org.jetbrains.kotlin.gradle.dsl.multiplatformExtensionOrNull import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtensionBuilder @@ -162,7 +162,7 @@ interface IdeMultiplatformImport { @JvmStatic fun instance(project: Project): IdeMultiplatformImport { return project.extraProperties.getOrPut(IdeMultiplatformImport::class.java.name) { - IdeMultiplatformImport(project.multiplatformExtension) + IdeMultiplatformImport(project.kotlinExtension) } } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt index 25bf82e2c14..54d69d38224 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportFactory.kt @@ -5,13 +5,13 @@ package org.jetbrains.kotlin.gradle.plugin.ide -import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializer import org.jetbrains.kotlin.gradle.kpm.idea.kotlinDebugKey import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint import org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers.* -fun IdeMultiplatformImport(extension: KotlinMultiplatformExtension): IdeMultiplatformImport { +internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMultiplatformImport { return IdeMultiplatformImportImpl(extension).apply { registerDependencyResolver( diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportImpl.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportImpl.kt index 72ee4eefa12..98f25ff4769 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportImpl.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/IdeMultiplatformImportImpl.kt @@ -6,7 +6,7 @@ package org.jetbrains.kotlin.gradle.plugin.ide import org.jetbrains.kotlin.gradle.ExternalKotlinTargetApi -import org.jetbrains.kotlin.gradle.dsl.KotlinMultiplatformExtension +import org.jetbrains.kotlin.gradle.dsl.KotlinProjectExtension import org.jetbrains.kotlin.gradle.idea.proto.tcs.toByteArray import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinExtrasSerializationExtension import org.jetbrains.kotlin.gradle.idea.serialize.IdeaKotlinSerializationContext @@ -18,7 +18,7 @@ import org.jetbrains.kotlin.tooling.core.Extras internal class IdeMultiplatformImportImpl( - private val extension: KotlinMultiplatformExtension + private val extension: KotlinProjectExtension ) : IdeMultiplatformImport { override fun resolveDependencies(sourceSetName: String): Set { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformDependencyResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformDependencyResolver.kt index bfaffc8ca2a..866337efb5c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformDependencyResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/plugin/ide/dependencyResolvers/IdePlatformDependencyResolver.kt @@ -6,6 +6,7 @@ package org.jetbrains.kotlin.gradle.plugin.ide.dependencyResolvers import org.gradle.api.artifacts.ArtifactView +import org.gradle.api.artifacts.component.LibraryBinaryIdentifier import org.gradle.api.artifacts.component.ModuleComponentIdentifier import org.gradle.api.artifacts.component.ModuleComponentSelector import org.gradle.api.artifacts.component.ProjectComponentIdentifier @@ -96,6 +97,19 @@ internal class IdePlatformDependencyResolver( ) } + is LibraryBinaryIdentifier -> { + IdeaKotlinResolvedBinaryDependency( + binaryType = binaryType, + coordinates = IdeaKotlinBinaryCoordinates( + group = componentId.projectPath + "(${componentId.variant})", + module = componentId.libraryName, + version = null, sourceSetName = null + ), + binaryFile = artifact.file + ) + } + + is OpaqueComponentArtifactIdentifier -> { /* Such dependencies *would* require implementing a resolver */ null