diff --git a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt index 0ac6ba22b56..63e6412c7e3 100644 --- a/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt +++ b/libraries/tools/kotlin-gradle-plugin-integration-tests/src/test/kotlin/org/jetbrains/kotlin/gradle/mpp/MppCompositeBuildIT.kt @@ -34,7 +34,8 @@ class MppCompositeBuildIT : KGPBaseTest() { regularSourceDependency("producerBuild::producerA/commonMain"), regularSourceDependency("producerBuild::producerA/nativeMain"), regularSourceDependency("producerBuild::producerA/linuxMain"), - kotilnNativeDistributionDependencies + kotilnNativeDistributionDependencies, + binaryCoordinates(Regex(".*stdlib-common:.*")) /* KT-56278 */ ) dependencies["linuxMain"].assertMatches( @@ -47,7 +48,7 @@ class MppCompositeBuildIT : KGPBaseTest() { dependsOnDependency(":consumerA/nativeMain"), dependsOnDependency(":consumerA/linuxMain"), projectArtifactDependency(Regular, "producerBuild::producerA", FilePathRegex(".*/linuxX64/main/klib/producerA.klib")), - kotilnNativeDistributionDependencies + kotilnNativeDistributionDependencies, ) } } 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 c2d1762c2a8..4a8cd6e6a12 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 @@ -21,6 +21,7 @@ import org.jetbrains.kotlin.gradle.plugin.extraProperties import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.DependencyResolutionLevel.Default import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.DependencyResolutionLevel.Overwrite import org.jetbrains.kotlin.gradle.plugin.ide.IdeMultiplatformImport.SourceSetConstraint +import org.jetbrains.kotlin.gradle.plugin.mpp.KotlinNativeCompilation import org.jetbrains.kotlin.gradle.plugin.sources.internal import org.jetbrains.kotlin.gradle.plugin.sources.project import org.jetbrains.kotlin.gradle.targets.metadata.isNativeSourceSet @@ -176,6 +177,12 @@ interface IdeMultiplatformImport { val isNative = SourceSetConstraint { isNativeSourceSet(it) } + val isSharedNative = isNative and SourceSetConstraint { sourceSet -> + sourceSet.internal.compilations.filterIsInstance() + .map { compilation -> compilation.konanTarget } + .toSet().size > 1 + } + val isSinglePlatformType = SourceSetConstraint { isSinglePlatformTypeSourceSet(it) } val isSingleKotlinTarget = SourceSetConstraint { isSingleKotlinTargetSourceSet(it) } 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 ff409c0cd2c..824c9444ac0 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 @@ -150,7 +150,7 @@ internal fun IdeMultiplatformImport(extension: KotlinProjectExtension): IdeMulti registerDependencyTransformer( transformer = IdePlatformStdlibCommonDependencyFilter, - constraint = SourceSetConstraint.isSinglePlatformType, + constraint = SourceSetConstraint.isSinglePlatformType and !SourceSetConstraint.isSharedNative, phase = IdeMultiplatformImport.DependencyTransformationPhase.DependencyFilteringPhase, ) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeSourcesAndDocumentationResolutionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeSourcesAndDocumentationResolutionTest.kt index 46227f5c1a4..d6d9c386e83 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeSourcesAndDocumentationResolutionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeSourcesAndDocumentationResolutionTest.kt @@ -82,7 +82,8 @@ class IdeSourcesAndDocumentationResolutionTest { binaryCoordinates("com.arkivanov.mvikotlin:mvikotlin:3.0.2:jsNativeMain"), binaryCoordinates("com.arkivanov.essenty:lifecycle:0.4.2:commonMain"), binaryCoordinates("com.arkivanov.essenty:instance-keeper:0.4.2:commonMain"), - IdeNativeStdlibDependencyResolver.nativeStdlibCoordinates(project) + IdeNativeStdlibDependencyResolver.nativeStdlibCoordinates(project), + binaryCoordinates(Regex(".*stdlib-common:.*")) /* KT-56278 */ ) val resolvedDependencies = resolveDependencySources(nativeMain) diff --git a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeStdlibResolutionTest.kt b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeStdlibResolutionTest.kt index 063031b23ce..2c5f350197c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeStdlibResolutionTest.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/functionalTest/kotlin/org/jetbrains/kotlin/gradle/dependencyResolutionTests/tcs/IdeStdlibResolutionTest.kt @@ -175,8 +175,22 @@ class IdeStdlibResolutionTest { project.evaluate() - project.assertStdlibDependencies(linuxSharedMain, nativeStdlibDependency(kotlin)) - project.assertStdlibDependencies(linuxSharedTest, nativeStdlibDependency(kotlin)) + project.assertStdlibDependencies( + linuxSharedMain, listOf( + nativeStdlibDependency(kotlin), + + /* See: KT-56278: We still need stdlib-common for shared native source sets */ + commonStdlibDependency(kotlin) + ) + ) + project.assertStdlibDependencies( + linuxSharedTest, listOf( + nativeStdlibDependency(kotlin), + + /* See: KT-56278: We still need stdlib-common for shared native source sets */ + commonStdlibDependency(kotlin) + ) + ) } @Test